Provider/ChangeNotifier: Widget构建后设置状态
Provider/ChangeNotifier: Set state after Widget is build
我正在使用 Provider/ChangenNotifier 模式来处理状态 in the official docs。
我有一个状态字段,我想在构建小部件后设置它。但是,如果我尝试在构建方法中设置。我得到一个错误:
setState() or markNeedsBuild() called during build.
我在哪里可以这样调用:
var state = Provider.of<StateModel>(context);
state.field = 'new Val';
你不能在构建过程中设置状态,如果你想测试状态的变化,把这段代码 state.field = 'new Val';
放在按钮事件中,比如 FloatActionButton
或构建完成后的事件(使用 Future.delayed 或添加 post fram 回调,参见 )
警告 如果您在 state.field 集合中调用 notifyListeners()
,并使用提供程序监听小部件中的更改,这将导致无限循环重建...这是您无法在构建期间设置状态的另一个原因...
我正在使用 Provider/ChangenNotifier 模式来处理状态 in the official docs。
我有一个状态字段,我想在构建小部件后设置它。但是,如果我尝试在构建方法中设置。我得到一个错误:
setState() or markNeedsBuild() called during build.
我在哪里可以这样调用:
var state = Provider.of<StateModel>(context);
state.field = 'new Val';
你不能在构建过程中设置状态,如果你想测试状态的变化,把这段代码 state.field = 'new Val';
放在按钮事件中,比如 FloatActionButton
或构建完成后的事件(使用 Future.delayed 或添加 post fram 回调,参见
警告 如果您在 state.field 集合中调用 notifyListeners()
,并使用提供程序监听小部件中的更改,这将导致无限循环重建...这是您无法在构建期间设置状态的另一个原因...