如何在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();
}

07-27 23:00