我是新的扑动和尝试整合扑动和firebase。我创建了一个flutter项目,并添加了android和ios应用程序,然后将文件下载到flutter应用程序。但是当我运行项目时,我得到以下错误
Exception has occurred.LateError (LateInitializationError: Local 'firebaseUser' has not been initialized.)
原因可能是什么?以下是
的代码行Future<bool> signInAnonymously() async {
if (Configurations.shared.isThisVersionTestedInAppStore ||
Utils.isInDebugMode!) {
late UserCredential firebaseUser;
try {
firebaseUser = await FirebaseAuth.instance.signInAnonymously();
} catch (e) {
AppLogger.error(e);
}
return didLogInSuccessfully(withUser: firebaseUser.user);
} else {
return false;
}}
主要。Dart文件内容
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await Configurations.shared.init();
await Repository.shared.init();
runApp(Configurations.shared.getMainAppWidget());
runTestScripts();
}
void runTestScripts() {
Utils.test();
Synchronizer.test();
Localized.test();
}
您得到错误,因为您试图使用firebaseUser
变量而没有初始化它。
这是因为firebaseUser
没有得到下面一行的值:
firebaseUser = await FirebaseAuth.instance.signInAnonymously();
由于firebaseUser
变量可以为空,您可以将其从late
变量更改为nullable
变量,如下所示:
改变:
late UserCredential firebaseUser;
:
UserCredential? firebaseUser;
和更新你的返回语句:
return didLogInSuccessfully(withUser: firebaseUser.user);
:
return didLogInSuccessfully(withUser: firebaseUser?.user);
如果firebaseUser
变量不为空,则只调用.user
属性。
更新后的代码应该是这样的:
Future<bool> signInAnonymously() async {
if (Configurations.shared.isThisVersionTestedInAppStore ||
Utils.isInDebugMode!) {
UserCredential? firebaseUser;
try {
firebaseUser = await FirebaseAuth.instance.signInAnonymously();
} catch (e) {
AppLogger.error(e);
}
return didLogInSuccessfully(withUser: firebaseUser?.user);
} else {
return false;
}
}
您是否在main.dart
添加了这些行以确保firebase在应用程序启动之前启动?
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const ChatApp());
}