Provider / ChangeNotifier:构建小部件后设置状态

时间:2020-02-16 16:23:47

标签: flutter dart flutter-state

我使用Provider / ChangenNotifier模式来处理状态,如in the official docs所述。

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

在构建过程中调用

setState()或markNeedsBuild()。

我在哪里可以这样称呼:

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

1 个答案:

答案 0 :(得分:2)

您无法在构建期间设置状态,如果要测试状态变化,请将此代码state.field = 'new Val';放在按钮事件(例如FloatActionButton)或构建完成后的事件(带有Future.delayed或添加postfram回调,请参见Is there any callback to tell me when "build" function is done in Flutter?

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