Flutter: 在 Navigator.pop() 后重新加载页面

8 浏览
0 Comments

Flutter: 在 Navigator.pop() 后重新加载页面

我有两个页面我在之间导航。当返回导航时,我希望第一页重新加载数据/重建自身,但似乎无效。我阅读了这里的回复,但我仍然无法使其工作。以下是我的代码:\n从第一页导航到第二页:\nInkWell(\n onTap: () async {\n await Navigator.push(\n context,\n MaterialPageRoute(\n builder: (context) =>\n AddChallengeUnitsPageWidget(),\n ),\n ).then((_) => setState(() {}));\n },\nchild: Icon(\nIcons.add_circle,\n ),\n),\n\n然后从第二页返回(在一个函数运行后,我需要来自该函数的更新来更新上一页):\nonPressed: () async {\n//我需要来自此函数的更新信息显示在上一页上\n await updateChallenge();\n Navigator.pop(context);\n//我尝试移除此setState调用,但问题没有解决。\n setState(() {});\n},\n\n有什么想法为什么页面的状态没有被正确更新?

0
0 Comments

问题的原因是需要在第二个屏幕上输入数据才能运行函数,所以无法在第一个屏幕上运行。解决方法是使用Navigator.of(context).pop(dataToPass);将数据传递给第一个页面的函数。在第一个页面的函数中使用then((dataToPass) () async {来接收传递的数据。

0
0 Comments

问题:在Flutter中,如何在返回上一页面时重新加载页面?

原因:问题的根本原因是,在返回上一页面时,页面没有重新加载。这可能是因为页面的状态没有被正确更新。

解决方法:为了解决这个问题,可以按照以下步骤进行操作:

1. 在第二个页面返回结果时,使用Navigator.pop(context, result);将结果返回给上一页面。

2. 在第一个页面中,确保添加了await关键字,并使用WidgetsBinding.instance.addPostFrameCallback方法。如果setState方法无效,可以使用此方法。

示例代码如下:

var result = await Navigator.push(

context,

MaterialPageRoute(

builder: (context) => AddChallengeUnitsPageWidget(),

),

);

WidgetsBinding.instance.addPostFrameCallback((_) => setState((){}));

通过以上步骤,我们可以在返回上一页面时重新加载页面,确保页面状态的正确更新。

0