Флаттер навигация, показывающая маршрут как / - PullRequest
0 голосов
/ 16 октября 2019

У меня есть карта с PopupMenuButton, которую я могу нажать, чтобы выполнить действие «Копировать». Я также могу выполнить то же действие со страницы сведений о карте. Проблема, которую я имею, состоит в том, чтобы вернуться на домашнюю страницу, я должен обслужить оба пути. Поэтому, если действие выполняется со страницы сведений, мне нужно дважды щелкнуть, чтобы вернуться на домашнюю страницу.

Действие с домашней страницы:

Домой> добавить страницу карты

  • navigator.pop () возвращает меня на домашнюю страницу

Действие со страницы сведений:

home> страница сведений о карте> страница добавления карты

  • Необходимость дважды щелкнуть здесь.

Я знаю, что должен сделать 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);
    }
  }

1 Ответ

1 голос
/ 16 октября 2019

У меня это работает.

Моя проблема заключалась в том, что в моем Основном приложении я указал свойство home для MaterialApp. Согласно документации, если указано свойство home, оно принимает маршрут /. Итак, моя домашняя страница - /, и в моих маршрутах она была определена как /home, и она была переопределена на /.

...