0

我有一张带有 PopupMenuButton 的卡片,我可以点击它来执行“复制”操作。我也可以从卡详细信息页面执行相同的操作。我遇到的问题是返回主页,我必须同时满足两条路径。所以如果动作是从详情页执行的,我需要弹两次才能回到首页。

来自主页的操作:

首页 > 添加卡片页面

  • navigator.pop() 带我回到主页

详细信息页面中的操作:

首页 > 卡片详情页面 > 添加卡片页面

  • 不得不在这里弹出两次。

我知道我必须pop至少做一次,然后我用popUntil来检查路线的当前状态。由于某种原因,它总是弹出两次。

调试后,它显示当前路线为/

  void _changeRoute(String newRouteName) {
    bool isNewRoute = false;

    // Pop once
    Navigator.pop(context); // after this I should be on home page for the first path

    Navigator.popUntil(context, (route) {
      print('Current route is ${route.settings.name}');

      if (route.settings.name == newRouteName) { // but this is showing current route as /
        isNewRoute = true;
      }
      return true;
    });

    print('is home page: $isNewRoute');

    if (!isNewRoute) {
      Navigator.pop(context);
    }
  }

4

1 回答 1

1

我有这个工作。

我的问题是在我的主应用程序中,我homeMaterialApp. 根据文档,如果home指定了属性,则采用 route /。所以我的主页是/,我在我的路线中定义了它/home,这被/.

于 2019-10-16T14:55:46.033 回答