无法从隔离中初始化 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 回答了这个问题。