当前位置: 首页 > 面试题库 >

使用Navigator.popUntil和不带固定名称的路由

仇和蔼
2023-03-14
问题内容

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


 类似资料:
  • 我正在尝试利用Laravel的登录页路径。例如,默认情况下,Laravel会将您带到欢迎页面,并且斜杠后没有url文本。 在我的欢迎页面中,我使用以下条件根据路线名称应用样式。 然而,此代码不工作。如何正确查看欢迎页面的路线? 编辑:使用“请求”而不是“路由”使其工作。然而,为了保持一致性,我想知道是否也可以使用“路线”来完成。

  • 问题内容: 我在看下面的代码,发现有些奇怪: 我期望这样做会导致编译错误,因为带有“ y”的不仅仅属于方法声明。为什么这样有效?我不知道如何或应该调用此代码。 运行它时,它还会产生,为什么在序列构造函数之前调用get? 问题答案: 这个: 是一个 静态初始化块 ,并在加载类时调用。您可以根据需要在类中添加任意数量的对象,它们将按照其出现顺序(从上到下)执行。 这个: 是一个 初始化块 ,并将代码复

  • 问题内容: 给定以下文件名: 我希望得到: 为什么这不起作用? 什么是正确的方法? 问题答案: 您不必调用外部命令。相反,您可以使用以下命令: 请注意,这个解决方案应该在所有近期的(工作 后2004年 ) POSIX 兼容的外壳(例如,,等)。 来源:Shell命令语言2.6.2参数扩展 有关bash字符串操作的更多信息:http : //tldp.org/LDP/LG/issue18/bash.

  • 如果涉及到一个JavaScript变量,这个变量在文档中的其他地方,你必须提供一个唯一标识符映射到该变量。名称路径提供了一种这样做的方法,并且消除实例成员,静态成员和内部变量之间的歧义。 JSDoc 3 中名称路径的基本语法示例: myFunction MyConstructor MyConstructor#instanceMember MyConstructor.staticMember MyC

  • 问题内容: H2似乎在带引号的名称和不带引号的名称之间有所不同。有没有办法让他们以相同的方式对待他们? 这是我已经完成的测试: 这是查询: 我该怎么做才能使这些查询与H2一起使用? 问题答案: 根据SQL规范的要求,H2中的引号名称区分大小写。这意味着它将起作用: 但这不会: 在H2中,不带引号的名称不区分大小写。它们通常会转换为大写字母(例如在Oracle和其他数据库中)。这意味着声明 与…相同

  • 问题内容: 考虑下面的代码: html文件的一部分: js文件的一部分: 我总是将控制器放在某个模块中,该模块的名称在ng-app中定义。当我不定义任何模块时,它如何工作? 问题答案: Angular具有此“自动发现”功能,如果在全局作用域上定义了控制器,则可以按其名称查找控制器。 此功能主要用于快速演示/原型/概念验证摘要,而非实际应用。 从Angular的 开发人员指南中 : 注意: 尽管An