dart - 使用 Navigator.popUntil 和没有固定名称的路由

是否可以将 Navigator.popUntil 与没有固定名称的路由一起使用?

我通过以下方式创建了一条路线:

  final _key_homepage = new GlobalKey<HomePageState>();

    Navigator.pushReplacement(context, new MaterialPageRoute(
      builder: (BuildContext context) =>  new HomePage(key: _key_homepage, somevariable1: 'some value', somevariable2: 'some value 2'),
    ));

现在,当我在任何屏幕上收到推送通知并显示弹出消息时,其中一个按钮应该指向上面列出的路线。路线已经创建,必须“弹出”到。怎么做?

使用命名路由,可以这样做:

 new FlatButton(
    child: new Text('Go to homepage'),
    onPressed: () {
      Navigator.popUntil(context, ModalRoute.withName('/homepage'));  

     //how to do the same without ModalRoute.withName('/homepage')

    },
)

“关键”和所需路线的上下文都可用。然而,重新创建路由感觉不是一个好的解决方案,因为原始路由创建包含一些变量(somevariable1、somevariable2 等)。

有什么方法可以做到这一点?

最佳答案

你应该在推送你的路由时添加一个设置;使用自定义名称

Navigator.pushReplacement(
  context,
  MaterialPageRoute(
    settings: RouteSettings(name: "Foo"),
    builder: ...,
  ),
);

然后你可以像使用命名路由一样使用 popUntil

Navigator.popUntil(context, ModalRoute.withName("Foo"))

https://stackoverflow.com/questions/51535621/

相关文章:

flutter - 在 TextFormField 上捕获点击事件

json - 将 JSON 映射到类对象

dart - 如何使用 Flutter 检测用户在我的屏幕上点击的位置?

dart - 如何在 Flutter 中创建带有圆角的自定义模糊形状

dart - Flutter Navigator.replace() 示例

flutter - 如何在 flutter 中加载所有 dart DateFormat 语言环境?

dart - 添加点击功能 flutter

flutter - 没有为类 'signInWithGoogle' 定义方法 'FirebaseAu

dart - 如何在 flutter 中做悠悠球动画?

Flutter - 我想将变量从一个类传递到另一个类