未定义名称“已安装”

황희윤*_*황희윤 8 dart flutter

我正在使用提供程序来进行 Flutter 的状态管理。我正在制作异步等待函数,并警告不要跨异步间隙使用 BuildContexts。因此,我尝试输入“if(!mounted)”代码,但收到警告,未定义名称“mounted”。

我该如何解决这个问题?谢谢你!

提供商代码

signIn(BuildContext context) async{
    try {
      final navigator = Navigator.of(context);
      !isSignupValid ? isSignupValid = true : null;
      await authentication.signInWithEmailAndPassword(
          email: userEmail.trim(), password: userPassword.trim()
      );
      navigator.pop();
    } on FirebaseAuthException catch (errorCode) {
      isSignupValid = false;
      print('isSignupValid : $isSignupValid');
      print('SignIn FirebaseAuthException : $errorCode');
      ScaffoldMessenger.of(context).showSnackBar(
        returnSnackBar(context, errorCode)
      );
    }
    await Future.delayed(const Duration(seconds: 0));
    if (!mounted) return;
    context.watch<ProfileData>().profileImage = null;
    notifyListeners();
  }

Run Code Online (Sandbox Code Playgroud)

her*_*ert 15

mounted属性仅适用于 a StatefulWidget。如果您不在有状态小部件中,则无法知道您使用的上下文是否仍然引用仍在小部件树中的小部件的状态。

我不确定你具体做什么。您可以将您的小部件更改为 aStatefulWidget或仅final profileData = context.read<ProfileData>()在方法的开头执行 a ,并且context在第一次async调用后不再访问。