Флаттер Назад Навигация и Блок данных - PullRequest
0 голосов
/ 12 февраля 2019

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

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

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

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

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

Что я ожидаю, так это

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

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

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

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

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

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

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

0 голосов
/ 12 февраля 2019

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

...