美文网首页
Flutter 常用路由方法

Flutter 常用路由方法

作者: jianshufei | 来源:发表于2022-02-08 11:56 被阅读0次

    前提:页面打开顺序A->B->C,当前所在页面为C

    1、popUntil

    a.所有页面销毁,app黑屏,
    dispose时,会从第一个页面开始dispose,例如a-b-c

     Navigator.popUntil(context, (route) => false);
    

    b.页面直接报错

    Navigator.popUntil(context, (route) => null);
    

    c.pop直到当前页面是B页面时停止
    dispose时,会从第一个页面开始dispose,例如页面打开顺序a-b-c-d,关闭时是c-d

    Navigator.popUntil(context, ModalRoute.withName('/B'));
    
    2、popAndPushNamed

    先打开B,在关闭自己(C)

    Navigator.popAndPushNamed(context, '/B');
    
    3、pushReplacementNamed

    先打开B,在关闭自己(C)

    Navigator.pushReplacementNamed(context, '/B');
    
    4、pushNamedAndRemoveUntil

    a.先打开一个新的页面,再删除路由栈中所有的页面,此时新页面会是路由栈中第一个页面
    (即使打开的是根路由,也会把路由栈中的删掉)

    • 方法1、2、3效果一样,打开新页面,干掉所有页面,新页面会成功第一个页面
    • 页面dispose时,会从第一个页面开始销毁
    1、Navigator.pushNamedAndRemoveUntil(context, '/', (route) => false);
    2、Navigator.pushNamedAndRemoveUntil(context, '/', (route) => route == null,);
    3、Navigator.pushNamedAndRemoveUntil(context, '/two', (route) => false);
    

    b.打开一个新页面C,干到其他页面,直到当前页是B

    Navigator.pushNamedAndRemoveUntil(context, '/C', ModalRoute.withName('/B'));
    
    • 如果新页面和条件是同一个页面,栈中会有2个相同的页面,例如:
    Navigator.pushNamedAndRemoveUntil(context, '/B', ModalRoute.withName('/B'));
    

    相关文章

      网友评论

          本文标题:Flutter 常用路由方法

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