[英]Uncaught LateInitializationError: Field 'deviceToken' has not been initialized
错误:未捕获的 LateInitializationError:字段“deviceToken”尚未初始化。 不确定这里出了什么问题。
late String deviceToken;
var registerRepo = GoogleSignInRepo();
FirebaseAuth auth = FirebaseAuth.instance;
Future<String> gettoken() async {
final String? token = await FirebaseMessaging.instance.getToken();
return token!;
}
@override
void initState() {
gettoken().then((value) {
deviceToken = value;
});
super.initState();
}
那么错误几乎告诉你问题所在:
Error: Uncaught LateInitializationError: Field 'deviceToken' has not been initialized.
Flutter 是空安全的,因此如果您定义一个变量,您需要为其赋值,因为定义的值不允许为 null。请记住, late
关键字仅告诉您该变量将在运行时初始化而不是编译时间。
这意味着您的代码的某些其他部分可能会在deviceToken
在您的Future
中初始化之前访问它。
你可以这样解决:
// Assign a value (empty string in this case).
String deviceToken = "";
另一种解决方案是使您的字段可为空,这可能是您的情况下更好的解决方案。
// Null is a valid value and will not cause a error.
String? deviceToken;
或者:确保该字段在您访问它之前已被初始化。
如需进一步参考,本文可能会对您有所帮助: https://dart.dev/null-safety/understanding-null-safety
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.