flutter - 如何在 Flutter 中获取 setState.of(context)?
问题描述
我在大多数页面上都有一个带有 ModalProgresHUD 的应用程序。通常我可以将一个函数传递给这个树中的任何小部件,例如 onTap,以打开/关闭这个微调器。
但有时这似乎很困难,我想在其他地方访问字段和/或 setState,在 WidgetTree 上。
一种选择似乎是将所有逻辑移至顶部 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
}
...
}
解决方案
你使用什么样的状态管理?看起来您只是在使用 setState 并且没有问题。但是要进行您想要的那种思考,我认为最好使用提供程序或 redux 之类的东西来处理您的应用程序的状态。
例如,使用 Provider,您可以在树的顶部提供一个值,并且可以在小部件树的任何位置获取此值来执行您的逻辑。
推荐阅读
- java - 在 Java jdbc oracle 中获取 Exausted ResultSet 错误
- javascript - 尝试使用查询推送路线时出现“NavigationDuplicated:避免冗余导航到当前位置”错误
- javascript - Vuexfire:如何正确绑定来自 Firestore 的数据?
- azure - Microsoft 自定义语音有 API 吗?在哪里找到它?
- javascript - 如何映射用 lodash 分组的数据
- android - 修改自定义 ROM 的 TetheringConfiguration LEGACY_DHCP_DEFAULT_RANGE
- wpf - AvalonDock:动态改变 LayoutAnchorablePane 的 CanClose 属性
- assembly - 汇编程序数据段中的未定义符号
- c# - GStreamer C# 服务器
- c# - WebView2 - NavigateToString 不呈现图像