Flutter中PlatformException(null-error)错误求助,已尝试多种方法未解决
Flutter集成Firebase时出现PlatformException(null-error)问题
我在Flutter项目中集成Firebase时反复遇到PlatformException(null-error),错误返回空值,具体错误日志如下:
PlatformException(null-error, Host platform returned null value for non-null return value., null, null)
或者:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(null-error, Host platform returned null value for non-null return value., null, null)
我的Main.dart代码
import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(MaterialApp(home: MyApp())); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { final Future<FirebaseApp> _fApp = Firebase.initializeApp(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Elite App")), body: FutureBuilder( future: _fApp, builder: (context, snapshot) { if (snapshot.hasError) { print("aaa"); print(snapshot.error); return Text("Yes Error"); } else if (snapshot.hasData) { return Text("Success"); } else { return CircularProgressIndicator(); } }), ); } }
Android/app级build.gradle代码
plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' } def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } android { namespace "com.hackelite.hack_elite" compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.hackelite.hack_elite" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation platform('com.google.firebase:firebase-bom:32.6.0') implementation 'com.google.firebase:firebase-analytics' }
Android根级build.gradle代码
buildscript { ext.kotlin_version = '1.9.0' repositories { google() mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.google.gms:google-services:4.4.0" } } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
已尝试的解决方案
- 执行
flutter clean,删除项目中的.gradle目录后重新构建 - 使用手动指定FirebaseOptions的方式初始化:
await Firebase.initializeApp( // Replace with actual values options: FirebaseOptions( apiKey: "XXX", appId: "XXX", messagingSenderId: "XXX", projectId: "XXX", ), ); - 使用
DefaultFirebaseOptions初始化:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );
以上方法均未能解决问题,希望能得到有效的排查方向或解决方案。
内容的提问来源于stack exchange,提问作者MUKUNTH J
相关产品推荐
相关产品推荐

