我已经观看了来自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) }
)
}
}
令人惊讶的是它可以工作,但是这段代码对我来说很香,所以我怀疑这是正确的方法。
谢谢。
答案 0 :(得分:0)
如果您具有状态(如更改状态应更新您的小部件),则应使用StatefulWidget,并使用setState()触发重建。 StatelessWidget用于本质上是“仅查看”的小部件。