我有这种情况
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Hello"),
),
body: Container(
child: ChildWidget(
listControl: this.sentToScreenBuildJson,
notifyParent: refresh,
),
),
);
}
这是我的父构建方法,在其中我向ChildWidget添加了另一个statfulscreen,并且传递的是json和刷新功能
每个json子项都能绘制UI然后单击按钮,我就可以获取回调以刷新方法。
refresh() {
print("I get refreshed from child");
setState(() {
print("I get refreshed from child in setState");
this.sentToScreenBuildJson = this.newJson;
});
}
在按钮上单击均会执行打印,但UI不会按照newJson进行更新。就像我期望的那样,作为setState运行,父级必须通过更新的json调用build。这不起作用。
感谢您的帮助。
在单击子按钮时更新parant窗口小部件类UI
这是Flutter中的一个常见用例,Flutter已在InheritedWidget类中内置了此类目的。您可以直接将其用于您的目的,也可以使用一些现成的包装解决方案,该解决方案在InheritedWidget
之类的幕后使用Provider。