Flutter 页面焦点事件上的颤振?
initState()将始终调用页面的初始化,这很好 但是,如果我有两个屏幕呢 屏幕1导航到屏幕2。现在,当您在第2页(pop)上按back时,第1页上是否有一个事件知道我们又回来了 换言之,屏幕1能否在第2页的背面按下时触发事件Flutter 页面焦点事件上的颤振?,flutter,dart,state,Flutter,Dart,State,initState()将始终调用页面的初始化,这很好 但是,如果我有两个屏幕呢 屏幕1导航到屏幕2。现在,当您在第2页(pop)上按back时,第1页上是否有一个事件知道我们又回来了 换言之,屏幕1能否在第2页的背面按下时触发事件 这对于设置屏幕2上更改的全局变量的状态非常有用,因此屏幕1可以相应地更新您可以等待Navigator.push(),它将在弹出路由时解析 在屏幕1中: wait Navigator.push(上下文,屏幕2); //当屏幕2弹出时做些什么 您还可以使用pop()将数
这对于设置屏幕2上更改的全局变量的状态非常有用,因此屏幕1可以相应地更新您可以
等待
Navigator.push()
,它将在弹出路由时解析
在屏幕1中:
wait Navigator.push(上下文,屏幕2);
//当屏幕2弹出时做些什么
您还可以使用pop()
将数据从Screen2
传递到Screen1
:
在屏幕2中:
Navigator.pop(上下文、数据);
在屏幕1中:
final dataFromScreen2=wait Navigator.push(上下文,Screen2);
您可以等待
Navigator.push()
,当弹出路线时,该问题将得到解决
在屏幕1中:
wait Navigator.push(上下文,屏幕2);
//当屏幕2弹出时做些什么
您还可以使用pop()
将数据从Screen2
传递到Screen1
:
在屏幕2中:
Navigator.pop(上下文、数据);
在屏幕1中:
final dataFromScreen2=wait Navigator.push(上下文,Screen2);
根据您的具体需求,您可以通过3种不同的方式制作
popEvents
(我的最爱):您可以使用第2页上的WillPopScope
小部件来防止返回按钮退出页面- page2:仅当您希望根据page2的结果在Page1上执行代码时才需要此选项
- 第1页: 使用第2页发送的
- 初始绑定
WidgetsFlutterBinding.ensureInitialized();
- 在第一页中,将
mixin添加到页面中WidgetsBindingObserver
class Page1State extends State<Page1> with WidgetsBindingObserver
根据您的具体需求,您可以通过3种不同的方式制作
(我的最爱):您可以使用第2页上的popEvents
小部件来防止返回按钮退出页面WillPopScope
- 仅侦听第2页(仅当您要检查第1页上的执行代码时)
- page2:仅当您希望根据page2的结果在Page1上执行代码时才需要此选项
- 第1页: 使用第2页发送的
- 您希望侦听整个应用程序生命周期事件。这样,当用户返回到第1页时,您可以随时检查任务是否已正确执行。还是不
- 初始绑定
WidgetsFlutterBinding.ensureInitialized();
- 在第一页中,将
mixin添加到页面中WidgetsBindingObserver
class Page1State extends State<Page1> with WidgetsBindingObserver
这真的很有效。谢谢你帮我。这真的很有效。谢谢你帮助我。class Page1State extends State<Page1> with WidgetsBindingObserver
@override void didChangeAppLicycleState(AppLifecycleState state){ if(state = AppLifecycleState.paused){ //do whatever you want here } }