Флаттер Назад Навигация и Блок данных

У меня есть этот поток

screen1->screen2(A)->screen2(B)

То, что происходит, с экрана 1 переходит к подробному экрану 2 (с набором данных A), затем внутри этого экрана есть кнопка, которая снова вызовет screen2 с другим набором данных (набор данных B)

Поэтому, когда я хочу вернуться назад, это где данные все еще показывают данные B

screen2(B)->screen2(B)->screen1

Что я ожидаю

screen2(B)->screen2(A)->screen1

Это как-то связано с шаблоном BloC BehaviorSubject? Я пытаюсь PublishSubject, но и тот же результат.

1 ответ

Определите глобальную переменную с начальным значением как A и по вашему Navigator.push() метод меняет свое значение на B, на onPop() метод screen2 изменить значение обратно на A,

Я бы немного изменил вашу навигацию, чтобы вы использовали

Navigator.of(context).pushNamed('screen2', arguments: {'categoryId': categoryId});

И ваш виджет screen2 при сборке получает указанный идентификатор категории из аргументов

Map args = ModalRoute.of(context).settings.arguments;

получает его детали и показывает это или делает что угодно. Затем, когда вы нажимаете кнопку возврата устройства, оно должно работать должным образом.

Другие вопросы по тегам