如何在使用 pop 时重新加载或调用一些函数 initState()

Posted

技术标签:

【中文标题】如何在使用 pop 时重新加载或调用一些函数 initState()【英文标题】:How to reload or call some function initState() in flutter while using pop 【发布时间】:2020-02-11 05:21:26 【问题描述】:

当用户单击返回或我在第二个屏幕中使用Navigator.pop() 时,我正在尝试运行一些方法。

我有两个屏幕。

    设置画面 编辑屏幕

编辑后,我将用户弹出到第一秒。现在在第一个屏幕中我使用SharedPreference。但是当用户回到第一个屏幕时,我需要重新运行一个方法。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

在从Settings 屏幕导航到Edit 屏幕时,使用它(在您的Settings 屏幕内)

Navigator.pushNamed(context, "/editScreen").then((_) 
  // you have come back to your Settings screen 
  yourSharedPreferenceCode();
);

如果您只想在Edit 屏幕上发生的某些事件上运行此代码,您可以在Edit 屏幕中使用pop 方法,例如

Navigator.pop(context, true); // pass true value

上面的代码应该是:

Navigator.pushNamed(context, "/editScreen").then((value) 
  if (value) // if true and you have come back to your Settings screen 
    yourSharedPreferenceCode();
);

编辑:

async-await 看起来像:

bool value = await Navigator.pushNamed(context, "/editScreen");
if (value) // if true and you have come back to your Settings screen 
  yourSharedPreferenceCode();

【讨论】:

asyncawait 的代码会是什么样子?

以上是关于如何在使用 pop 时重新加载或调用一些函数 initState()的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中单击按钮重新加载网页,但在重新加载调用函数后

如何在ionic2中的pop()之后重新加载离子页面

是否可以使用 navigator.pop 刷新或重新加载页面...比如第 1(nav.push=>2)页面到第 2 页,然后从第 2(nav.pop,值)返回到第 1 页?

如何在 DART 中重新加载 api 调用?

matlabm文件中如何调用simulink模块

在重新加载/刷新页面时,未调用dojo / ready函数