如何使用弹出框更新屏幕或返回路线时的状态

时间:2020-08-27 04:40:17

标签: flutter

我想使用Navigator.pop更新到返回该屏幕的屏幕。 例如。我有Home屏幕和“某些步骤”屏幕(Step1Step2Step3Step4

主屏幕是一个有状态的小部件,并显示已完成的步骤数。

流程就像

主页=>步骤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回调被调用,并且从HomeStep3使用{{1} },没有代码正在执行,并且我无法更新主屏幕。 我知道我可以逐步使用Navigator.pop进入主屏幕,但看起来还不行(看起来像是在主屏幕上按了主屏幕,而动画应该像是回到过去了)。

3 个答案:

答案 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
})