Предположим этот сценарий: page1 Navigator.push
на page2. Пользователь на странице 2 нажимает кнопку "Назад", поэтому страница 2 появляется, а страница 1 восстанавливает вид. Как мне поймать это событие на странице 1?
Flutter - Как получить уведомление, когда страница, которую я нажал, была открыта кнопкой назад?
Ответы (3)
Вы можете проверить это, передав параметр из Navigator.pop ...
со второго экрана: -
Navigator.pop(context, 'updateList'),
и на первом экране проверьте это и передайте условие, которое вы хотите: -
FloatingActionButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) =>
new ManageAssignments(),
),
).then((val) {
if (val == 'updateList') getAssignementList();
});
},
backgroundColor: Theme.of(context).primaryColor,
child: Icon(Icons.add),
)
Надеюсь, это сработает для вас :-)
person
Zeeshan Ansari
schedule
14.11.2019
В Dart 2 новое ключевое слово необязательно. Кроме того, использование new не рекомендуется в соответствии с рекомендациями по эффективному использованию Dart.
- person Ravinder Kumar; 14.11.2019
Поэтому, когда происходит Navigator.push (), он возвращает Future. А за Navigator.pop () решено будущее. Вы можете вернуть значение из Navigator.pop, например, Navigator.pop (context, "MyResult"); Этот результат будет записан так - final result = Navigator.push (). Вы можете использовать результат в виджете, откуда был вызван Navigator.push ().
person
Braj
schedule
14.11.2019
Используйте виджет WillPopScope
на всплывающем экране, а затем, чтобы получать уведомления, когда экран всплывает, используйте функцию onWillPop
.
Нравится:
return WillPopScope(
child: Scaffold(
body: new Container(), // your body content
onWillPop: (){
//Screen is poped.
},
);
)
person
Chetan Raval
schedule
14.11.2019