Flutter学习------路由

路由使用方式

1、简单路由

示例 无参路由

 Navigator.push(context,
       MaterialPageRoute(builder: (context) {
       return SearchScreen();//这里是要跳转的界面地址
       }));

示例 有参路由

 Navigator.push(context,
           MaterialPageRoute(builder: (context) {
            return SearchScreen(name:'参数');
           }));
		//SearchScreen界面获取传过来的参数值
		${this.widget.name}

示例 带参返回路由

  Navigator.pop(context,'返回去的参数')
  //接收页面取值方式
 var result =  Navigator.push(context,
        MaterialPageRoute(builder: (context) {
        return SearchScreen();
       }));
 result.then((value) => print('这里是返回的参数${value}'));

2、命名路由

示例

 return MaterialApp(
      title: '我的第一个flutter',
      routes: {
        '/home':(context)=> HomeScreen(),
        '/A':(context)=> A(),
        '/B':(context)=> B(),
        '/C':(context)=> C(),
      },
      home: const HomePage(),
    );
//调用方式
   Navigator.pushNamed(context, '/A');
//传参方式
   Navigator.pushNamed(context, '/A',arguments: 'canshu');
   //获取参数方式
   var param = ModalRoute.of(context)?.settings.arguments;

初始化路由 initialRoute: ‘/A’,

3、路由钩子

MaterialApp按照如下的规则匹配路由:

  1. 路由为/,home不为null则使用home.
  2. 使用routes指定的路由。
  3. 使用onGenerateRoute生产的路由,处理除home和routes以为的路由.
  4. 如果上面都不匹配则调用onUnknownRoute.
  return MaterialApp(
      routes: {
        '/home':(context)=> HomeScreen(),
        '/A':(context)=> A(),
        '/B':(context)=> B(),
        '/C':(context)=> C(),
      },
      initialRoute: '/A',
      onGenerateRoute: (RouteSettings settings){
        if(settings.name == '/A'){
          return MaterialPageRoute(builder: (context) => A());
        }
      },
      //如果上面的页面都没有走这里
      onUnknownRoute: (RouteSettings settings){
        return MaterialPageRoute(builder: (context) => 错误界面());
      },
      home: const HomePage(),
    );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值