如何在Flutter中获取setState.of(context)?

时间:2019-08-30 17:01:15

标签: flutter dart

我在大多数页面上都有一个带有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
       }
       ...
    }

1 个答案:

答案 0 :(得分:0)

您使用哪种状态管理?看起来您只是在使用setState而已,这没有问题。但是要想想,我想最好使用诸如provider或redux之类的东西来处理应用程序的状态。

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