我在大多数页面上都有一个带有ModalProgresHUD的应用程序。通常,我可以将功能(例如onTap)传递给该树中的任何小部件,以打开/关闭此微调器。
但是有时这似乎很困难,我想访问WidgetTree上其他州的字段和/或setState。
一种选择似乎是将所有逻辑移到顶部的Widget中,并向下传递处理程序以访问这些方法,但这感觉很笨拙。
class StatefullPage ..... {
String _someImportantField;
set someImportantField(String newValue) {
_someImportantField = newValue;
if(mounted) setState((){});
}
...
}
class StateOfSomethingElse ... {
Future doSomeWorkThatAffectsTheParent() async {
await something.then((String newResult) {
State.of(context).someImportantField = newResult;// HOW TO DO THIS
}
...
}
答案 0 :(得分:0)
您使用哪种状态管理?看起来您只是在使用setState而已,这没有问题。但是要想想,我想最好使用诸如provider或redux之类的东西来处理应用程序的状态。
例如,使用提供程序,您可以在树的顶部提供一个值,并可以在小部件树的任何位置获取该值以执行逻辑。