在类的方法中访问状态的哪种方法正确?

时间:2019-05-25 13:49:14

标签: flutter dart googleio

我已经观看了来自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) }
    )
  }
}

令人惊讶的是它可以工作,但是这段代码对我来说很香,所以我怀疑这是正确的方法。

谢谢。

1 个答案:

答案 0 :(得分:0)

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