使用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"))

以上是 使用Navigator.popUntil和不带固定名称的路由 的全部内容, 来源链接: utcz.com/qa/430166.html

回到顶部