按下bottun后如何刷新页面

Ara*_*ash 13 flutter

我有一个列表页面,一个添加页面,用户单击添加页面,转到新页面,在该页面中添加一些实体。然后我弹出导航器,然后用户返回列表页面。在这一点上,我想以某种方式得到通知-可能是回调?重写方法,我不太确定-然后从数据库中重新读取信息。

扑上有这样的钩子吗?还是我应该使用另一种模式?

ada*_*ion 18

如果在您的列表页面,您创建函数让说retrieveData() 读取数据列表然后在initState 中调用它,如果您使用pushNamed 路由,简单的解决方案是

Navigator.pushNamed(context, '/adddatapage').whenComplete(retrieveData());
Run Code Online (Sandbox Code Playgroud)

如果您使用推送路线,

Navigator.of(context).push(new MaterialPageRoute(builder: (context) => AddPage())).whenComplete(retrieveData);
Run Code Online (Sandbox Code Playgroud)

那应该就够了。无需在添加页面上添加额外代码。如果用户再次按下后退按钮,这将起作用,而无需在添加页面中添加额外代码。

  • 我使用的是 Get,所以我不直接处理 Navigator.of(context),而是更简单的 `Get.to()`。尽管如此,`.whenComplete()`还是有帮助的 (2认同)

Ian*_*Ian 7

Navigator.push方法返回Route的通用类型的future:

Navigator.of(context)
  .push(new MaterialPageRoute<String>(...))
  .then((String value) {
    print(value);
  });
Run Code Online (Sandbox Code Playgroud)

在新路线中,当您拥有所需的价值时:

Navigator.of(context).pop('String');
Run Code Online (Sandbox Code Playgroud)


Ara*_*vin 6

为@ian 的答案添加一个选项

Navigator.of(context)
  .push(new MaterialPageRoute<String>(...))
  .then((value) => setState(() => {}));
Run Code Online (Sandbox Code Playgroud)

这对我有用。这将在加载页面时重建。