【发布时间】:2021-02-20 16:51:27
【问题描述】:
我已阅读与此问题相关的所有问题,但没有一个问题与我的相似。
我有两个页面:主页和设置页面。在主页上,我用Consumer 监听提供者的变化。在设置页面中,我不听更改:
class _SettingsState extends State<Settings> {
StatesProvider states;
@override
void initState() {
states = Provider.of<StatesProvider>(context, listen: false);
super.initState();
}
@override
Widget build(BuildContext context) {
return myUi();
}
@override
void deactivate() {
states.changeSettings(settings); //just a dummy function, doesn't do anything
states.finishSetting();
super.deactivate();
}
}
我已经删除了不必要的代码。我在上面的代码中尝试做的是更改一些应用程序设置并在我离开该设置页面时应用它们。
finishSetting()方法:
finishSetting() {
notifyListeners();
}
错误:
The following assertion was thrown while dispatching notifications for StatesProvider:
setState() or markNeedsBuild() called during build.
我知道notifyListeners() 调用build() Widgets 监听它的方法。但是当我离开设置页面时,我没有看到任何小部件的 build() 方法被调用。我该怎么办?
一般来说,有没有办法在我离开页面时拨打notifyListeners()?
【问题讨论】:
标签: android flutter flutter-provider flutter-change-notifier