Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 使用Navigator.popintil和没有固定名称的路由_Dart_Flutter - Fatal编程技术网

Dart 使用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

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

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

  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)