[英]LateInitialization Error In Flutter main.dart
我正在開發我的應用程序,但我不知道為什么會出現這個遲到的初始化錯誤我在其他應用程序中也使用了相同的代碼,但我沒有遇到這樣的錯誤,但在這個主文件中,錯誤仍然存在,我一直在試了這么久還是不行。 bool? userLoggedIn
bool? userLoggedIn
也不起作用,flutter 不允許使用它。 這是我的 main.dart 文件代碼。 另外,如果有人能告訴我如何處理應用程序共享首選項的 2 次登錄,這將很有幫助
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late bool userLoggedIn;
@override
void initState() {
getLoggedInState();
super.initState();
}
getLoggedInState() async {
await HelperFunctions.getUserLoggedInSharedPreference().then((value) {
setState(() {
userLoggedIn = value!;
});
});
}
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Dashee',
theme: ThemeData(
primarySwatch: Colors.deepPurple,
),
home: userLoggedIn ? const Dashboard() : Splash());
}
}
LateInitializationError
表示使用 late 關鍵字聲明的變量未在構造函數上初始化
你聲明這個布爾變量:
late bool userLoggedIn
但是沒有聲明構造函數,所以它不會被初始化,顯而易見的事情是在構造函數上給它一個值,就像這樣:
_MyAppState() {
userLoggedIn = false; // just some value so dart doesn't complain.
}
但是,我可以建議您不要這樣做,而只需刪除late
關鍵字嗎? 這樣做當然會給你一個錯誤,因為userLoggedIn
永遠不會被初始化,但是你可以通過直接在它的聲明或構造函數初始化上給它一個默認值來解決這個問題:
bool userLoggedIn = false;
或者
_MyAppState(): userLoggedIn = false;
請注意在第二個選項中我如何沒有使用構造函數的主體,如果您計划在構造函數的主體上初始化變量,則應該僅延遲聲明變量。
這應該可以解決您遇到的LateInitializationError
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.