Flutter路由

一.MaterialApp中‘initialRoute’和home的区别

1.先看一下我的路由定义

final routes = {
  '/': (context) => WelcomePage(),
  '/welcomePage': (context) => WelcomePage1(),

};
// 固定写法
var onGenerateRoute = (RouteSettings settings) {
  //统一处理
  final String name = settings.name!;
  final Function pageContentBuilder = routes[name]!;
  if (pageContentBuilder != null) {
    if (settings.arguments != null) {
      final Route route = MaterialPageRoute(
          builder: (context) =>
              pageContentBuilder(context, arguments: settings.arguments));
      return route;
    } else {
      final Route route =
          MaterialPageRoute(builder: (context) => pageContentBuilder(context));
      return route;
    }
  }
};

2.main中加载路由代码

MaterialApp(
        builder: (context, widget) {
          return MediaQuery(
            ///设置文字大小不随系统设置改变
            data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
            child: widget!,
          );
        },
        //去掉debug字样
        debugShowCheckedModeBanner: true,
        //初始化路由
        initialRoute: '/welcomePage',
        // home: WelcomePage(),
        //命名路由
        onGenerateRoute: onGenerateRoute,
        navigatorObservers: [
          MyApp.routeObserver, // 路由监听
        ],
      )

3.在使用'initialRoute'进行初始化页面需要注意在路由定义中要定义'/'为名字的路由要不然会一直报错 ,这种方式需要定义根目录

4.使用'initialRoute'加载页面在加载‘/welcomePage’的时候也会将你的根目录放到栈内《有兴趣的人小伙伴可以试试》

5.使用'home'加载就是我们认为的那种,先加载第一个页面在加载第二页面

6.记录一下自己遇到问题哪里写的不对欢迎指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值