Это мое первое приложение во Flutter, все было хорошо и гладко, но теперь, когда я немного заблокирован.
Я не могу перемещаться между CupertinoTabBar и моим экраном входа в систему (у которого его не должно быть), как показано на изображении.
Вход в систему работает нормально, и когда он получает ответ 200 от сервера, он переходит к представлению с помощью CupertinoTabBar.
Но когда я нажимаю кнопку LogOut, мне нужно вернуться к loginView без какой-либо панели вкладок.
Единственный способ, которым я смог вернуться к входу в систему, таков:
Navigator.push(context, CupertinoPageRoute(builder: (context) => LoginView()),);
И это сохраняет мой LoginView внутри tabBar в стеке виджетов, и, что еще хуже, если я снова войду в систему, я в конечном итоге наложу еще один tabBar на предыдущий.
Что может быть лучшим подходом для этого?
Большое спасибо, Габи
1 ответ
Вы можете использовать pushAndRemoveUntil
для извлечения маршрутов, которые вам не нужны в стеке. Вероятно, вы хотите удалить все такие маршруты:
Navigator.of(context).pushAndRemoveUntil(CupertinoPageRoute(builder: (context) => LoginView()), (r) => false);
Или, если ваш текущий маршрут выходит из системы, вы можете заменить его маршрутом входа в систему, и стек маршрутов останется прежним:
Navigator.of(context).pushReplacement(CupertinoPageRoute(builder: (context) => LoginView()));
Похожие вопросы
Новые вопросы
flutter
Используйте этот тег для вопросов о наборе инструментов кроссплатформенного пользовательского интерфейса Flutter. Если ваш вопрос касается конкретной платформы, отметьте ее также (например, [android], [ios] и т. д.). Вы также можете включить тег [dart] для вопросов по кодированию.