android - Dart Flutter "Non-nullable instance field ' _isSigningIn' 必须初始化。”错误

标签 android flutter dart google-signin

我正在尝试使用 Dart Flutter 进行 Google Auth 操作。
我制作了与我观看的视频中完全相同的代码。虽然它没有在视频中给出错误,但它给了我一个错误。
我的代码:

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';

class GoogleSignInProvider extends ChangeNotifier {
  final googleSignIn = GoogleSignIn();
  bool _isSigningIn;

  GoogleSignInProvider() {
    _isSigningIn = false;
  }

  bool get isSigningIn => _isSigningIn;

  set isSigningIn(bool isSigningIn) {
    _isSigningIn = isSigningIn;
    notifyListeners();
  }

  Future login() async {
    isSigningIn = true;

    final user = await googleSignIn.signIn();
    if (user == null) {
      isSigningIn = false;
      return;
    } else {
      final googleAuth = await user.authentication;

      final credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );

      await FirebaseAuth.instance.signInWithCredential(credential);

      isSigningIn = false;
    }
  }

  void logout() async {
    await googleSignIn.disconnect();
    FirebaseAuth.instance.signOut();
  }
}

错误:
GoogleSignInProvider GoogleSignInProvider()
package:todolist/google_sign_in.dart

Non-nullable instance field '_isSigningIn' must be initialized.
Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.
enter image description here
问题是什么?我该如何解决?我提前感谢您的帮助。

最佳答案

因为您的值不可为空,所以它需要一个默认值

bool _isSigningIn; //non-nullable variable should be inialized
bool? _isSigningIn; //nullable variable and does not requires initialization
如果你让你的变量可以为空,你可以让它保持未初始化,在其他情况下,你应该在定义它时初始化它
bool _isSigningIn = false;
或者在你的构造函数里面有一个值,像这样:
GoogleSignInProvider(this._isSigningIn);
还有一个选项,你也可以给一个默认值:
  • 将变量放入 [] 并给出默认值,它将是位置参数,但不是必需的

  • 请参见下面的示例:
    class GoogleSignInProvider extends ChangeNotifier {
      final googleSignIn = GoogleSignIn();
      bool _isSigningIn;
      
      GoogleSignInProvider([this._isSigningIn = false]);
      
    }
    

    关于android - Dart Flutter "Non-nullable instance field ' _isSigningIn' 必须初始化。”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71578071/

    相关文章:

    dart - bool 值作为 copyWith 的可选参数

    android - 使用 Singleton 设计模式正确打开/关闭数据库

    java - 有什么方法可以跟踪或监听用户点击浏览器中的任何链接,或任何聊天信使应用程序甚至短信吗?

    java - 属性 android :forceQueryable not found in Android studio when running Espresso test

    java - Android - OnClick 在子类中而不是 super 中使用

    flutter - 小部件文本中的文本OverFlow.ellipsis不起作用

    dart - 如何将数据发布到 dart 中的 https 服务器?

    android - 如何在 flutter 中设置滚动条颜色?

    image - Flutter Navigation 和同时对 dispose() 的要求

    debugging - 在WebStorm中设置Dart断点