首页 > 解决方案 > 如何在 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
       }
       ...
    }

标签: flutterdart

解决方案


你使用什么样的状态管理?看起来您只是在使用 setState 并且没有问题。但是要进行您想要的那种思考,我认为最好使用提供程序或 redux 之类的东西来处理您的应用程序的状态。

例如,使用 Provider,您可以在树的顶部提供一个值,并且可以在小部件树的任何位置获取此值来执行您的逻辑。


推荐阅读