美文网首页Flutter
Flutter Navigation路由跳转/回退

Flutter Navigation路由跳转/回退

作者: xieyinghao | 来源:发表于2023-06-29 11:08 被阅读0次

    1、切换根控制器
    如果当前栈已经销毁了 就不能在返回了 否则直接就是黑屏

    //前进
      Navigator.of(context)
                .pushNamedAndRemoveUntil(
                “跳转路径”,
                ModalRoute.withName('/demo'),//清除旧栈需要保留的栈 不清除就不写这句
                arguments:{"data":“233”}//传值
            );
     
     
    Navigator.pushNamedAndRemoveUntil(
          context,
         "跳转路径", (route) => false,//true保留跳转的当前栈   false 不保留
        ); 
    

    例子:

    Navigator.of(context).pushNamedAndRemoveUntil("/registerpage", (Route route) => false);
    

    2、跳转 push

        Navigator.push(context,
            MaterialPageRoute(builder: (BuildContext context) {
              return PersonSystemSetting(logoutClick: _logout,);
            }));
    

    详细:

    Push跳转:
    
    Navigator.push(
    
                    context,
    
                    MaterialPageRoute(
    
                        //fullscreenDialog: true, //从底部弹出
    
                        builder: (BuildContext context) {
    
                          return Login();
    
                        }),
    
                  );
    
    或 (等价于):
    
    Navigator.of(context)
    
                      .push(MaterialPageRoute(builder: (BuildContext context) {
    
                    return Login();
    
                  }));
    
    或:
    
    Navigator.pushNamed(context, '/Login').then((value){
    
          });
    
    
    
    跳转并销毁之前的页面,返回到指定页面:
    
    //跳转顺序是Screen1—>Screen2—>Screen3—>Screen4
    
    当从Screen3跳转到Screen4的时候我们希望将Screen2,Screen3从栈里面移除掉,这样在Screen4点击返回就能直接回到Screen1
    
    Navigator.of(context).pushAndRemoveUntil(
    
    MaterialPageRoute(builder: (context) => Screen4()),
    
    ModalRoute.withName('/screen1'));
    
    
    
    //打开Screen4页面,并销毁当前页:Screen2—>Screen3—>Screen4
    
    Navigator.of(context).pushReplacementNamed('/screen3');
    
    //也可以使用以下方式
    
    Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=>Screen3()));
    
    
    
    Pop退出:
    
    Navigator.pop(context);
    
    //或:
    
    Navigator.of(context).pop();
    
    //或:带参数返回,push接收:.then((value) {print('------回传参数:$value');})
    
    Navigator.pop(context, 'YES');
    
    Navigator.pop(context, {
    
       'name': '回传参数'
    
                    });
    
    
    
    一直退出直到某一个页面:
    
    //当前在Screen4页面,点击回到Screen1,连带着Screen2,Screen3也一起退出
    
    Navigator.of(context).popUntil(ModalRoute.withName('/screen1'));
    

    相关文章

      网友评论

        本文标题:Flutter Navigation路由跳转/回退

        本文链接:https://www.haomeiwen.com/subject/qtiaydtx.html