我尝试从子小部件更新 Flutter 中的对象。我要更新的对象作为参数传递给孩子。问题:对象不想改变。我在一个有状态的小部件上工作并用 更新状态setState
,但没有任何变化。也许您可以在我的代码中找到错误。
我的对象
final guestbook = Guestbook({
title: "Test"
// ... some other parameters
})
我将Guestbook
对象传递给子小部件的函数
void _editGuestbook(Guestbook guestbook, BuildContext context) {
CupertinoScaffold.showCupertinoModalBottomSheet(
context: context,
builder: (BuildContext context, ScrollController scrollController) {
return EditGuestbook(
guestbook: guestbook, // Here I pass the object to the child
scrollController: scrollController,
);
}).then((value) {
setState(() {
guestbook = value;
});
});
}
在下一个小部件上,我更新了数据库中的一些值,并且还想更改我的本地对象,以便用户可以看到更新成功。因此,我将具有更新值的对象作为参数传递回父视图。
final Guestbook guestbook;
......
........
// Update database
final gb = widget.guestbook;
setState(() {
updatedGuestbook = Guestbook(
title: "New title",
// ... some other parameters
});
await GuestbooksDatabase()
.updateGuestbook(guestbook: updatedGuestbook, key: gb.id)
.then((_) {
Get.back(result: updatedGuestbook); // Here I send data back to parent
});
正如您在检索新对象后在上面看到的那样,我使用以下方式更新状态setState
:
setState(() {
guestbook = value;
});
Bot 视图中没有任何变化。我总是看到旧的状态。如果我拉刷新以直接从数据库中加载新条目,它会更新。有没有办法简单地更新本地对象,这样我就不需要额外的服务器请求?