Вы можете сделать 3 разными способами в зависимости от того, что именно вы хотите.
1.popEvents (Мой любимый): вы можете использовать виджет WillPopScope
на странице 2, чтобы предотвратить выход со страницы кнопками возврата.
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: (){
return Future.value(a==b); //Replace by your conditionnals here. false means you're block back action for this page
},
child: Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
),)
);
}
1. прослушивать только страницу 2 (только если вы хотите проверить выполнение кода на странице 1)
-page2: это необходимо, только если вы хотите выполнить свой код на странице 1 в зависимости от результата страницы 2.
Navigator.pop(data);//this is the data you want to send back to Page1
//if user presses back button, it's same like Navigator.pop(null)
-Page1: используйте отправленный Page2
final result = await Navivigator.push(MaterialPageRoute(builder: (ctx)=>Page2()));
if(result!=null){
//do somthing
}
3. Вы хотите отслеживать все события жизненного цикла приложения. Таким образом, вы можете в любое время проверить, когда пользователь вернется на страницу 1, правильно ли были выполнены задачи. или нет
-Init binding
WidgetsFlutterBinding.ensureInitialized();
-In page One добавьте WidgetsBindingObserver
mixin на вашу страницу
class Page1State extends State<Page1> with WidgetsBindingObserver
-Override didChangeAppLicycleState
method: это будет передать текущее состояние вашей страницы или все событие состояния приложения, например, переход в фоновый режим ...
@override
void didChangeAppLicycleState(AppLifecycleState state){
if(state = AppLifecycleState.paused){
//do whatever you want here
}
}