我正在使用“未来”构建器为我的用户设置个人资料,他们可以在第二页中编辑信息。但是当他们提交Navigator.pop(context)时会被调用,但是在第一个屏幕上没有任何变化。如果我离开页面并返回它,它只会刷新状态!有没有办法强制屏幕刷新?
User user = User(
id: widget.user.id,
name: _name,
profileImageUrl: _profileImageUrl,
bio: _bio,
email: _email,
webAddress: _webAddress,
tel: _tel,
location: _location,
);
DatabaseService.updateUser(user);
Navigator.pop(context);
}
这就是我的提交按钮
答案 0 :(得分:0)
正如@pskink在评论const [columns, setColums] = useState([
{title: "Number", field: 'itemNumber', editable: 'never'},
{title: "Description", field: 'itemDescription', editable: 'never'},
{title: "Amount", field: 'amount', editable:'always'},
]);
return (
<MaterialTable
title=""
columns={columns}
data={this.state.Items}
editable={{
onRowUpdate: (newData, oldData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
this.onRowEditSave(newData);
}, 600);
}),
/>
)
中指出的,将返回Future。您可以听其完成,然后调用Navigator.pop()
来重建窗口小部件
setState
现在,仅当您在查看和编辑页面上的数据来自同一来源时,此方法才有效。如果您只是传递原始值来编辑页面并在那里进行更改,则无论您先前的页面可能不会更新。在这种情况下,您可以从编辑页面返回更新的数据,或者使用状态管理方法来监听更改