【问题标题】:Reload previous page when Navigator.of().pop() called in next page在下一页调用 Navigator.of().pop() 时重新加载上一页
【发布时间】:2021-10-24 17:07:38
【问题描述】:

这是从个人资料页面显示下一页的代码。在这个编辑页面中,有几个按钮可以编辑用户信息。 当用户完成编辑后,调用 Navigator.of(context).pop() 并再次出现个人资料页面。

在个人资料页面中:

String userName = "none"; // public string
........
Text(userName),
IconButton(icon: Icons.edit, onPressed: () => Navigator.of(context).pushNamed("/edit"))

在编辑页面中:

IconButton(icon: Icons.edit, onPressed: () => username = "ABCD")

当用户完成编辑后,按下应用栏中的后退按钮。这个按钮是 Navigator 的标准,不是唯一的小部件。


这些代码在从编辑页面返回时不能更改Text(userName),只显示旧字符串。

那么我怎样才能再次调用此个人资料页面?还是只重新加载userName 字符串?

【问题讨论】:

标签: flutter dart


【解决方案1】:

您可以使用像RiverPod 这样的状态管理包并更新特定的小部件。通过使用 Scoped Provider 并监听该特定值来更新该特定小部件。

More about RiverPod

【讨论】:

    【解决方案2】:

    正如 Yash 所说,它与 .then((value) => setState(() {})) 一起使用。

    个人资料页面:

    String userName = "none";
    .....
    Text(userName),
    IconButton(icon: Icons.edit, onPressed: () => Navigator.of(context).pushNamed("/edit").then((value) => setState(() {})))
    

    编辑页面:

    setState( () { userName = "ABCDEFG"; })
    

    【讨论】:

      猜你喜欢
      • 2021-07-21
      • 1970-01-01
      • 2014-03-30
      • 2012-07-17
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      相关资源
      最近更新 更多