Flutter: GoogleSignInAccount 属性 'authentication' 无法无条件访问,因为receiver可以'null'
Flutter: GoogleSignInAccount The property 'authentication' can't be unconditionally accessed because the receiver can be 'null'
我是 Flutter 新手。正在练习 google 账号登录。
当我定义 GoogleSignInAccount 时,出现错误:“'GoogleSignInAccount?' 类型的值无法分配给 'GoogleSignInAccount' 类型的变量。”
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
其他人说我们可以使用'?'解决这个问题。
有用。但是,弹出另一个问题:“无法无条件访问属性 'authentication',因为接收者可以是'null'。”
final GoogleSignInAccount? googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
任何建议都很好。泰
您收到该警告是因为 googleUser 具有 nullable 类型 (GoogleSignInAccount?
) 以便在 googleAuth 中使用它可以用 bang(null 感知)运算符 标记它,就像这样 googleUser!.authentication;
。但是,只有在您 100% 确定 this 永远不会为 null 时才使用该方法,在这种情况下,您可以尽可能简单地使用不可为 null 的类型(不带“?”)。
或者,您可以使用 control flow statements
在使用非空值初始化 googleUser 后仅初始化 googleAuth。
例如像这样的空检查:
if(googleUser !=null) {
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
}
更多上下文:
出现错误的原因:"A value of type 'GoogleSignInAccount?' can't be assigned to a variable of type 'GoogleSignInAccount'."
是 _googleSignIn.signIn();
有一个 nullable return 类型的 'GoogleSignInAccount?'
(因为它可能会失败并且不会 return 用户),因此您不能将其分配给类型为 'GoogleSignInAccount'.
[=18 的 不可空变量 =]
仅供参考:在 _googleSignIn.signIn();
周围添加空值检查很可能更有意义
我是 Flutter 新手。正在练习 google 账号登录。 当我定义 GoogleSignInAccount 时,出现错误:“'GoogleSignInAccount?' 类型的值无法分配给 'GoogleSignInAccount' 类型的变量。”
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
其他人说我们可以使用'?'解决这个问题。 有用。但是,弹出另一个问题:“无法无条件访问属性 'authentication',因为接收者可以是'null'。”
final GoogleSignInAccount? googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
任何建议都很好。泰
您收到该警告是因为 googleUser 具有 nullable 类型 (GoogleSignInAccount?
) 以便在 googleAuth 中使用它可以用 bang(null 感知)运算符 标记它,就像这样 googleUser!.authentication;
。但是,只有在您 100% 确定 this 永远不会为 null 时才使用该方法,在这种情况下,您可以尽可能简单地使用不可为 null 的类型(不带“?”)。
或者,您可以使用 control flow statements
在使用非空值初始化 googleUser 后仅初始化 googleAuth。
例如像这样的空检查:
if(googleUser !=null) {
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
}
更多上下文:
出现错误的原因:"A value of type 'GoogleSignInAccount?' can't be assigned to a variable of type 'GoogleSignInAccount'."
是 _googleSignIn.signIn();
有一个 nullable return 类型的 'GoogleSignInAccount?'
(因为它可能会失败并且不会 return 用户),因此您不能将其分配给类型为 'GoogleSignInAccount'.
[=18 的 不可空变量 =]
仅供参考:在 _googleSignIn.signIn();
周围添加空值检查很可能更有意义