【问题标题】:Flutter: Firebase has not been correctly initializedFlutter:Firebase 未正确初始化
【发布时间】:2022-01-07 22:09:52
【问题描述】:

我正在开发 iPhone 12 Pro Max 模拟器,macOS Catalina。

我在尝试运行应用程序时收到此错误:

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: [core/not-initialized] Firebase has not been correctly initialized.

控制台中还有一个提示: 通常这意味着您在调用 Firebase.initializeApp 之前尝试使用 Firebase 服务。

我在使用 Firebase 之前对其进行了初始化。像这样:

void main() async {
  print('-- main');

  WidgetsFlutterBinding.ensureInitialized();
  print('-- WidgetsFlutterBinding.ensureInitialized');

  await Firebase.initializeApp();
  print('-- main: Firebase.initializeApp');

  runApp(const MyApp());
}

这是我在控制台输出中看到的:

Xcode build done.                                           132.9s
flutter: -- main
flutter: -- WidgetsFlutterBinding.ensureInitialized
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: [core/not-initialized] Firebase has not been correctly initialized.

Usually this means you've attempted to use a Firebase service before calling `Firebase.initializeApp`.

我在控制台中看不到-- main: Firebase.initializeApp 行。所以它在第一次尝试初始化 Firebase 时失败了。

我在 Firebase 中创建 Android/Apple 应用。下载google-services.json/GoogleService-Info.plist并放入项目中。

  • GoogleService-Info.plist:

  • google-services.json:

我没有使用android,但是我在build.gradle中添加了依赖:classpath 'com.google.gms:google-services:4.3.10'

还有 app/build.gradle:apply plugin: 'com.google.gms.google-services'

依赖关系:

firebase_auth: ^3.3.5
firebase_messaging: ^10.0.9
google_sign_in: ^5.2.1

颤振--版本:

Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 18116933e7 (3 months ago) • 2021-10-15 10:46:35 -0700
Engine • revision d3ea636dc5
Tools • Dart 2.14.4

我该如何解决这个问题?顺便说一句,我正在开发一个全新的颤振项目。

【问题讨论】:

  • 当你添加google-services.json时——你是通过Xcode添加的吗?如果是,您是否重新启动了您的应用程序?
  • 我手动将它添加到项目中的android文件夹中。是的,我重启了几次应用。
  • 我刚刚更新了我的答案,因为您还需要将 firebase_core 添加到依赖项中。

标签: firebase flutter firebase-authentication flutter-ios


【解决方案1】:

当您将google-services.json 添加到 iOS 项目时,您需要按照以下文档中的说明使用 Xcode 添加它:

https://firebase.flutter.dev/docs/manual-installation/ios

如果您通读该页面,您会发现以下注释:

通过文件系统手动添加 [google-service.json] 不会将文件链接到项目

您需要尝试然后重新启动您的应用程序(重新构建它)。

编辑:附加说明:

您还需要将firebase_core 添加到pubspec.yaml 中的依赖项。

【讨论】:

  • 谢谢伙计!解决此问题后,还有另一个问题。应用程序在 await _googleSignIn.signIn()line 中崩溃。并且没有错误信息。你知道为什么会崩溃吗?
  • @UmutÇağdaşCoşkun 随时。我以前没有使用过google_sign_in 包。也许值得发布一个单独的问题并将其添加到 Twitter 上的 Flutter 社区(顺便说一句,我就是这样找到你的)
  • 好的,我正在检查 SO 中的一些主题。如果他们不适合我,我会发布一个新问题。再次感谢! ?
  • @UmutÇağdaşCoşkun 如果您使用的是 Google 登录,请确保您已通过转到 Project settings > General > Public settings 指定“支持电子邮件”。
  • 优秀的答案!
【解决方案2】:

以下是我修复此错误的方法:

  1. 确保所有 firebase 服务都已添加到您的 pubspec.yaml 文件的依赖项部分。 firebase_core 似乎丢失了,需要将您的 Flutter 应用程序连接到您的 firebase 项目。您可以使用命令 $flutter pub add firebase_core 简单地添加它

  2. 将 firebase 插件添加到您的主文件中:

    import 'package:firebase_core/firebase_core.dart';
    import 'firebase_options.dart';
    
  3. 用一个异步函数替换你的 void main 函数:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
      );
      runApp(const YourAppGoesHere());
    } 
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2012-06-17
    • 2022-01-22
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多