簡體   English   中英

無法在 android 上初始化 firebase - 在初始化二進制信使之前無法使用此 MethodChannel

[英]Cannot initialize firebase on android - Cannot use this MethodChannel before the binary messenger has been initialized

我已經使用框架模板創建了一個 flutter 應用程序,並且正在嘗試測試一些基本的 firestore 功能。 我遵循了 flutter fire 文檔,如果我將應用程序部署到 web 它可以完美運行,但在 android 上我收到以下錯誤:

E/flutter (26271): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: 'package:flutter/src/services/platform_channel.dart': Failed assertion: line 134 pos 7: '_binaryMessenger != null || ServicesBinding.instance != null': Cannot use this MethodChannel before the binary messenger has been initialized. This happens when you invoke platform methods before the WidgetsFlutterBinding has been initialized. You can fix this by either calling WidgetsFlutterBinding.ensureInitialized() before this or by passing a custom BinaryMessenger instance to MethodChannel().
E/flutter (26271): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:51:61)
E/flutter (26271): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:40:5)
E/flutter (26271): #2      MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:134:7)
E/flutter (26271): #3      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:167:36)
E/flutter (26271): #4      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:350:12)
E/flutter (26271): #5      MethodChannel.invokeListMethod (package:flutter/src/services/platform_channel.dart:363:41)
E/flutter (26271): #6      MethodChannelFirebase._initializeCore (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:31:37)
E/flutter (26271): #7      MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:73:13)
E/flutter (26271): #8      Firebase.initializeApp (package:firebase_core/src/firebase.dart:40:47)

添加WidgetsFlutterBinding.ensureInitialized的建議似乎沒有意義,因為我的 main.dart 如下所示:

    import 'package:fam/firebase_options.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:flutter/material.dart';
    import 'src/app.dart';
    import 'src/settings/settings_controller.dart';
    import 'src/settings/settings_service.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized;
    
      await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
      );
    
      final settingsController = SettingsController(SettingsService());
      await settingsController.loadSettings();
    
      runApp(MyApp(settingsController: settingsController));
    }

Firebase 上的應用程序配置全部通過flutterfire configure完成,因此將所有相關部分添加到firebase_options.dart

我的 pubspec.yaml 添加了以下條目

cloud_firestore: ^3.1.10
firebase_core: ^1.13.1

我對嘗試解決問題的方法有點困惑。

我使用WidgetsFlutterBinding.ensureInitialized(); 在我的代碼中有括號。 也許缺少括號是您問題的原因?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM