无法从隔离中初始化 Firebase 应用程序实例
Failed to initialize Firebase app instance from an isolate
我正在尝试从单独的隔离区与 Firestore 进行交互。到目前为止,我一直在隔离区内进行 Firebase 应用程序初始化。
main.dart
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
print("Firebase app initialized in the main isolate");
ActivityReportHandler.instance.trackActivity();
}
activity_report_handler.dart
void trackActivityInBackground(message) async {
await Firebase.initializeApp();
print("Firebase app initialized in an isolate");
}
顶层函数
在尝试初始化 isolate 中的 FirebaseApp 实例时出现异常
Unhandled Exception: Exception: Null check operator used on a null value
如果我在 trackActivityInBackground
的第一行添加 WidgetsFlutterBinding.ensureInitialized()
,我会得到一个异常:
UI actions are only available on root isolate.
在幕后,当 await Firebase.initializeApp()
被调用时,经过一系列调用,应用程序最终尝试获取 binaryMessenger
,但是当我深入研究时,我注意到 [=19] =] 和 ServiceBinding.instance
在此处为空
BinaryMessenger get binaryMessenger => _binaryMessenger ?? ServicesBinding.instance!.defaultBinaryMessenger;
所以崩溃的根源很清楚,不清楚的是如何让它起作用? :D
提前感谢您的帮助!
关于这个问题,以下 github thread 回答了这个问题。
我正在尝试从单独的隔离区与 Firestore 进行交互。到目前为止,我一直在隔离区内进行 Firebase 应用程序初始化。
main.dart
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
print("Firebase app initialized in the main isolate");
ActivityReportHandler.instance.trackActivity();
}
activity_report_handler.dart
void trackActivityInBackground(message) async {
await Firebase.initializeApp();
print("Firebase app initialized in an isolate");
}
顶层函数
在尝试初始化 isolate 中的 FirebaseApp 实例时出现异常
Unhandled Exception: Exception: Null check operator used on a null value
如果我在 trackActivityInBackground
的第一行添加 WidgetsFlutterBinding.ensureInitialized()
,我会得到一个异常:
UI actions are only available on root isolate.
在幕后,当 await Firebase.initializeApp()
被调用时,经过一系列调用,应用程序最终尝试获取 binaryMessenger
,但是当我深入研究时,我注意到 [=19] =] 和 ServiceBinding.instance
在此处为空
BinaryMessenger get binaryMessenger => _binaryMessenger ?? ServicesBinding.instance!.defaultBinaryMessenger;
所以崩溃的根源很清楚,不清楚的是如何让它起作用? :D
提前感谢您的帮助!
关于这个问题,以下 github thread 回答了这个问题。