我想使用Navigator.pop
更新到返回该屏幕的屏幕。
例如。我有Home
屏幕和“某些步骤”屏幕(Step1
,Step2
,Step3
,Step4
)
主屏幕是一个有状态的小部件,并显示已完成的步骤数。
流程就像
主页=>步骤1 =>步骤2 =>步骤3 =>步骤4
在任何步骤上,按返回或关闭按钮,它应返回到Home
屏幕,主屏幕应显示已完成步骤的更新状态。因此,我正在使用Navigator.popAndPushNamed
导航到步骤屏幕的后续步骤,以便Navigator.pop
会进入Home
屏幕。
然后在Navigator.pushNamed(context, 'Step1').then
屏幕中使用Home
对其进行更新。
但是问题在于.then
本身仅在Step1
上被调用,因为它被弹出并且用户是否喜欢
主页=>步骤1 =>步骤2 =>步骤3 =>主页(使用弹出窗口)
主屏幕仅显示Step1已完成,因为从Step1 to Step2
进入时,它的.then
回调被调用,并且从Home
到Step3
使用{{1} },没有代码正在执行,并且我无法更新主屏幕。
我知道我可以逐步使用Navigator.pop
进入主屏幕,但看起来还不行(看起来像是在主屏幕上按了主屏幕,而动画应该像是回到过去了)。
答案 0 :(得分:1)
如果您来自下一页,则可以在上一页中使用一个变量来跟踪,并返回一个布尔值true变量,表明它是从上一个活动返回的。您可以在init方法中使用该变量,如果该变量的值为true,则可以触发一个事件,该事件将返回适当的状态。
答案 1 :(得分:1)
使用RouteObserver
找到了解决方案,并实现了https://api.flutter.dev/flutter/widgets/RouteObserver-class.html中给出的示例类似的东西
我正在寻找RouteAware的didPopNext
的方法。
答案 2 :(得分:0)
检查一下,它对我有用!
Navigator.of(context).push(route).then((val){ //you can update you data here, when coming back })