如何在initState
方法中设置提供者?尝试做listen: false
,但出现错误:
final MyProvider myProvider = Provider.of<MyProvider>(context, listen: false);
if (myProvider.someVar == null) {
myProvider.setSomeVar('yo');
}
我收到以下错误:
在构建过程中调用setState()或markNeedsBuild()
这是providers方法
void setSomeVar(String text) {
someVar = text;
notifyListeners();
}
答案 0 :(得分:1)
在您的提供程序中,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();
}