[英]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.