如何在initState
方法中设置提供程序?尝试执行listen: false
,但出现错误:
final MyProvider myProvider = Provider.of<MyProvider>(context, listen: false);
if (myProvider.someVar == null) {
myProvider.setSomeVar('yo');
}
我收到以下错误:setState() or markNeedsBuild() called during build
这是提供者方法
void setSomeVar(String text) {
someVar = text;
notifyListeners();
}
最佳答案
在您的提供程序中,setSomeVar()正在调用notifyListeners()。在initState和build()中这是一个禁忌。构建完成后,请尝试将addPostFrameCallback用于setSomeVar()。
另外,在使用addPostFrameCallback时,对于使用上下文的对象,应检查context == null,以防万一。
initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (context == null) return;
log('Navigating to SplashPage');
Navigator.pushReplacementNamed(context, splashRoute);
});
super.initState();
}
关于flutter - 在InitState中设置提供程序状态会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63783264/