是否可以将 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/