【问题标题】:Navigation from one MaterialApp to the route on second MaterialApp从一个 MaterialApp 导航到第二个 MaterialApp 上的路线
【发布时间】:2021-06-20 07:47:11
【问题描述】:

就是这样,我在 Stack 小部件中有两个 MaterialApp,我这样做是为了让它们有单独的导航路线。问题是,我需要从 MaterialApp2 导航到 MaterialApp 1 上的页面。

更清晰的示例:按钮位于 MaterialApp 2 上,我需要按下该按钮并显示 MaterialApp 1 上的页面。我该怎么做呢?每当我在 MaterialApp 2 上使用 Navigator.of(context).push() 时,它当然会更改该 MaterialApp 上的页面...

【问题讨论】:

  • 你能显示你的代码吗?你尝试过的。
  • 我认为你可以使用全局导航键,但为什么你首先需要两个单独的 MaterialApps ???

标签: flutter


【解决方案1】:

在特定 MaterialApp 小部件中调用的 Navigator.push() 不必在该应用程序的堆栈上执行推送操作。选择哪个 MaterialApp 的堆栈取决于您在 push 函数中传递的 Buildcontext。 你可以通过全局保存两个 materialApps 的 BuildContext 并在 Navigator.push() 中使用你想要的任何一个来做到这一点。

  1. 在 Builder 小部件中包装两个 MaterialApps 的子级以提取两者的 BuildContext。说 app1 是 context1,app2 是 context2。

  2. 使用不同类中的静态变量全局保存它们,例如“数据”。

  3. 现在在应用程序的任何位置调用 Navigator.push() 时,不要简单地将小部件的上下文放在上下文参数中,而是使用您之前保存的 materialApps 的上下文。

假设你想在 MaterialApp1 的堆栈上推送一个页面,这样做

Navigator.push(Data.context1,/*Rest of the builder function as it is*/);

您也可以尝试使用 Navigator 小部件,而不是使用两个不同的 MaterialApps 来获取两个单独的导航器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 2020-02-07
    • 2021-09-12
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2018-09-04
    相关资源
    最近更新 更多