1

我使用 Provider/ChangenNotifier 模式来处理官方文档中描述的状态。

我有一个状态字段,我想在构建小部件后设置它。但是,如果我尝试在构建方法中进行设置。我得到一个错误:

在构建期间调用 setState() 或 markNeedsBuild()。

我在哪里可以调用类似的东西:

var state = Provider.of<StateModel>(context);
state.field = 'new Val';
4

1 回答 1

3

您不能在构建期间设置状态,如果您想测试状态更改,请将此代码state.field = 'new Val';放在按钮事件中,例如FloatActionButton构建完成后的事件(使用 Future.delayed 或添加 post fram 回调,请参阅是否有回调告诉我什么时候在 Flutter 中完成了“构建”功能?

警告如果您notifyListeners()在 state.field 集合内调用,并使用提供程序监听小部件中的更改,这将导致无限循环的重建...这是您无法在构建期间设置状态的另一个原因...

于 2020-02-18T02:00:50.067 回答