Dart 使用Navigator.popintil和没有固定名称的路由
是否可以将Navigator.popintil与没有固定名称的路由一起使用 我通过以下方式创建了一条路线:Dart 使用Navigator.popintil和没有固定名称的路由,dart,flutter,Dart,Flutter,是否可以将Navigator.popintil与没有固定名称的路由一起使用 我通过以下方式创建了一条路线: final _key_homepage = new GlobalKey<HomePageState>(); Navigator.pushReplacement(context, new MaterialPageRoute( builder: (BuildContext context) => new HomePage(key: _key_hom
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'),
));
“关键”和所需路线的上下文都可用。但是,重新创建路由感觉不是一个好的解决方案,因为原始路由创建包括一些变量(somevariable1、somevariable2等)
有什么办法可以做到这一点吗?你应该在推送路线时添加一个设置;使用自定义名称
Navigator.pushReplacement(
context,
MaterialPageRoute(
settings: RouteSettings(name: "Foo"),
builder: ...,
),
);
然后,您可以像使用命名路由一样使用popUntil
Navigator.popUntil(context, ModalRoute.withName("Foo"))
如果您不使用命名路由,或者我们希望导航器首先处于活动状态,则可以使用
Navigator.of(context).popUntil((route) => route.isFirst)
断言失败:第48行第15位:“生成器!”null':不正确。@user9139407您必须将生成器属性传递给MaterialPageRoute(…)这很完美,它显示初始主页(如果您以这种方式构建应用程序)
Navigator.of(context).popUntil((route) => route.isFirst)