【问题标题】:Which way to access state in class's methods is correct?在类的方法中访问状态的哪种方式是正确的?
【发布时间】:2019-10-11 19:28:51
【问题描述】:

我看过来自 google io19 的实用状态管理视频,关于 package:provider/provider.dart 及其管理状态的方式。它看起来很简单,但我对在类的方法中访问状态有疑问。

在课堂上说我需要更新状态:

_onTap(data) {
    appState.data = data;
}

在类的构建方法中,我得到了状态:

this._appState = Provider.of<AppState>(context);

现在我需要二传手,所以我在做:

set _appState(newValue) {
   appState = newValue;
}

最后我的班级需要状态字段:

class Tapable extends StatelessWidget {
  var appState;

  _onTap(data) {
    appState.data = data;
  }

  set _appState(newValue) {
    appState = newValue;
  }

  @override
  Widget build(BuildContext context) {
    this._appState = Provider.of<AppState>(context);
    return SomeWidget(
       onTap: () { _onTap(data) }
    )
  }
}

令人惊讶的是它有效,但这段代码对我来说很臭,所以我怀疑这是正确的方法。

谢谢。

【问题讨论】:

    标签: flutter dart googleio


    【解决方案1】:

    如果你有状态,比如改变状态应该更新你的小部件,你应该使用 StatefulWidget,并使用 setState() 来触发重建。 StatelessWidget 适用于本质上是“仅查看”的小部件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2019-07-11
      • 1970-01-01
      • 2011-07-18
      • 2022-11-17
      相关资源
      最近更新 更多