如何在initState
方法中设置提供程序?尝试执行listen: false
,但出现错误:
final MyProvider myProvider = Provider.of<MyProvider>(context, listen: false);
if (myProvider.someVar == null) {
myProvider.setSomeVar('yo');
}
我收到以下错误:这是提供者方法
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();
}