我使用 Provider/ChangenNotifier 模式来处理官方文档中描述的状态。
我有一个状态字段,我想在构建小部件后设置它。但是,如果我尝试在构建方法中进行设置。我得到一个错误:
在构建期间调用 setState() 或 markNeedsBuild()。
我在哪里可以调用类似的东西:
var state = Provider.of<StateModel>(context);
state.field = 'new Val';
我使用 Provider/ChangenNotifier 模式来处理官方文档中描述的状态。
我有一个状态字段,我想在构建小部件后设置它。但是,如果我尝试在构建方法中进行设置。我得到一个错误:
在构建期间调用 setState() 或 markNeedsBuild()。
我在哪里可以调用类似的东西:
var state = Provider.of<StateModel>(context);
state.field = 'new Val';
您不能在构建期间设置状态,如果您想测试状态更改,请将此代码state.field = 'new Val';
放在按钮事件中,例如FloatActionButton
构建完成后的事件(使用 Future.delayed 或添加 post fram 回调,请参阅是否有回调告诉我什么时候在 Flutter 中完成了“构建”功能?)
警告如果您notifyListeners()
在 state.field 集合内调用,并使用提供程序监听小部件中的更改,这将导致无限循环的重建...这是您无法在构建期间设置状态的另一个原因...