[Day21] Flutter - Presentation AutoRouter(part5)

前言

Hi, 我是鱼板伯爵今天要在我们的专案里面加入场景的路由,这样可以方便管理我们每个场景,教学内容只会撷取片段程序码,建议大家搭配完整程序码来练习。

完整程序码

需要准备的知识

AutoRouter

创建一个路径并设置为初始路径,完成後就可以执行生成档案的指令,你将会得到router.gr.dart档案,并且终端机会显示成功。

$ flutter pub run build_runner watch --delete-conflicting-outputs
import 'package:auto_route/auto_route.dart';
import 'package:stunning_tribble/presentation/screens/home/home_screen.dart';

@MaterialAutoRouter(
  replaceInRouteName: 'Page,Route',
  routes: <AutoRoute>[
    AutoRoute(
      page: HomeScreen,
      initial: true,
    ),
  ],
)
class $AppRouter {}

接着宣告一个AppRouter()传入APP内使用,如果改完後APP报错,重新启动後就可以使用了。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ConfigReader.initializeApp(Environment.dev);
  final AppRouter appRouter = AppRouter();
  runApp(
    MultiBlocProvider(
      providers: [
        BlocProvider(
          create: (context) => ThemeBloc(),
        ),
      ],
      child: MyApp(
        appRouter: appRouter,
      ),
    ),
  );
}
class MyApp extends StatelessWidget {
  final AppRouter _appRouter;

  const MyApp({
    Key? key,
    required AppRouter appRouter,
  })  : _appRouter = appRouter,
        super(key: key);

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<ThemeBloc, ThemeState>(
      builder: (context, state) {
        return MaterialApp.router(
          debugShowCheckedModeBanner: ConfigReader.config().DEBUG,
          title: 'Flutter Demo',
          theme: state.themeData,
          darkTheme: ThemeData(),
          routerDelegate: _appRouter.delegate(),
          routeInformationParser: _appRouter.defaultRouteParser(),
          builder: (context, router) => router!,
        );
      },
    );
  }
}


<<:  Day 6. Compare × G2 × Quill

>>:  DAY07随机森林演算法(续5)

【在 iOS 开发路上的大小事-Day20】透过 Firebase 来管理使用者 (Sign in with Facebook 篇) Part2

昨天我们已经完成了 Sign in with Facebook 的前置作业了,今天我们要来将功能实作...

回头呼喊你的爱情:Callback回呼函式

甚麽是「Callback function」? MDN的解释如下: 「回呼函式(callback ...

30天学习笔记 -day 19-viewpager动画(PageTransformer )

一般的ViewPager在做滑动的过程中总是会觉得少了点流畅感,今天会使用PageTransform...

Day12: GuardDuty单一帐号/Org.布建、测试结果产生

如何布署GuardDuty? 1.找到Amazon GuardDuty 2.点Enable Guar...

Day 10 - API 文件导览总结 - 重点整理

在 Day 9 我们使用 Order API 建立了一笔测试订单。 在送出请求的 JSON 字串是这...