Flutter升级后Firebase无法创建新用户及空指针异常求助
问题描述
升级Flutter版本后,Firebase无法创建新用户,抛出以下空指针异常:
E/flutter (22614): at io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin$$ExternalSyntheticLambda3.run(Unknown Source:6)
E/flutter (22614): ... 3 more
E/flutter (22614): Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference
E/flutter (22614): at com.google.android.gms.tasks.Tasks.zza(com.google.android.gms:play-services-tasks@@18.1.0:5)
E/flutter (22614): at com.google.android.gms.tasks.Tasks.await(com.google.android.gms:play-services-tasks@@18.1.0:9)
E/flutter (22614): at io.flutter.plugins.firebase.core.FlutterFirebasePluginRegistry.lambda$getPluginConstantsForFirebaseApp$0(FlutterFirebasePluginRegistry.java:55)
E/flutter (22614): at io.flutter.plugins.firebase.core.FlutterFirebasePluginRegistry$$ExternalSyntheticLambda1.run(Unknown Source:4)
E/flutter (22614): ... 3 more
E/flutter (22614): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference
E/flutter (22614): at io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin.lambda$getPluginConstantsForFirebaseApp$16(FlutterFirebaseAuthPlugin.java:689)
解决方案
修正初始化顺序:异常核心是
FirebaseAuth实例未初始化就调用了getCurrentUser(),需确保在使用Auth功能前完成Firebase核心初始化:void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }同步Firebase插件版本:Flutter升级后,需保证
firebase_core和firebase_auth等插件版本与当前Flutter兼容,在pubspec.yaml中统一指定版本后执行flutter pub get:dependencies: flutter: sdk: flutter firebase_core: ^2.15.0 firebase_auth: ^4.10.0清理项目缓存:执行
flutter clean,删除android/.gradle、android/build目录后重新运行项目,避免缓存导致的版本冲突。检查Android配置文件:确认
android/app/google-services.json为最新版本,包名与Firebase控制台一致;同时检查android/build.gradle和android/app/build.gradle中的Firebase依赖版本同步。延迟Auth操作:所有Firebase Auth相关操作(如创建用户)必须在
Firebase.initializeApp()完成后执行,禁止在初始化流程未结束前提前调用。
内容的提问来源于stack exchange,提问作者Adam Obonyilo

