所以我在顫振應用程式中使用共享首選項,我得到這個錯誤: 引數型別'字串?不能分配給引數型別“字串” ,這里是代碼:
if (result != null) {
SharedPreferenceHelper().saveUserEmail(userDetails.email);
}
錯誤是userDetils.email有人可以幫忙 嗎 顯示的圖片
uj5u.com熱心網友回復:
這是兩種不同的型別。你需要強制字串嗎?通過 null 強制運算子:userDetails.email!或通過給它一個默認值(如果它為 null)來轉換為 String:userDetails.email ?? ''
uj5u.com熱心網友回復:
在查看發布的影像后,第 30 行宣告指出:
User? userDetails = result.user;// Which potentially means that variable userDetails could be null
由于類用戶詳細資訊沒有共享,但在問題中達到頂峰,我很確定該類User有一個電子郵件引數,其宣告包括它的資料型別,String? email就像這樣,前綴為finalor late。
在這種情況下,您有嵌套的無效級別來訪問物件email外的變數userDetails。意思是:
Case 1=> userDetails is null and email is null.
Case 2=> userDetails is not null and email is null.
Case 3=> userDetails is not null and email is not null.
Meaning both `userDetails` and `email` have a datatype of which defines them to be null at compile time.
由于 dart 是靜態型別語言,因此您需要!在每個資料型別在編譯時可為空的變數之后添加,以讓 dart 知道該變數中包含資料并在運行時稍后的某個時間被分配了一個值。
因此,要解決此問題,您需要做的是將下面的行替換為第 33 行:
SharedPreferenceHelper().saveUserEmail(userdetails!.email ?? "Some default email");
// if you never want to save null as email pref else use the one below
SharedPreferenceHelper().saveUserEmail(userdetails!.email.toString());
uj5u.com熱心網友回復:
是健全的null安全問題 String?表示分配給Stirng的任何變數?型別它可以是空或空值可用,所以請確保通過提供userDetils.email 來檢查它是否為空? 這意味著 userDetils.email 是否為空
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439630.html
上一篇:在Dart中共享Plex庫
下一篇:T除了一類
