492

我正在构建一个Flutter应用程序,并且集成了Firebase,但是当我单击按钮注册、登录或注销时,我总是会收到这个错误。我看到其他人也问过同样的问题,但似乎没有一个对我有效。我正在使用Flutter和安卓工作室。如何解决此问题?

这是我代码的摘录

类HomeScreen扩展StatefulWidget{@覆盖_主页屏幕状态createState()=>主页屏幕状态();}类_HomeScreenState扩展状态{@覆盖小工具构建(BuildContext上下文){返回脚手架(背景颜色:颜色。红色,主体:中心(child:容器(子项:RaisedButton(按下:(){FirebaseAuth.instance.signOut().then((值){导航器.pushReplacement(上下文,材料页面路径(构建器:(上下文)=>登录屏幕());});},child:文本(“注销”),))));}}

下面是引发的异常

══╡ GESTURE引起的异常╞═══════════════════════════════════════════════════════════════════处理手势时引发了以下FirebaseException:[core/no-app]未创建任何Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp()引发异常时,这是堆栈:#0 MethodChannelFirebase.app(包:firebase_core_platform_interface/src/method_channel/method_cchannel_firebase.dart:118:5)#1 Firebase.app(包:Firebase_core/src/Firebase.dart:52:41)#2 FirebaseAuth.instance(包:firebase_auth/src/firebase_auth.dart:37:47)#3_主页屏幕状态.build<匿名关闭>(套餐:cosytok/screenses/home.dart:20:28)#4 _链接响应状态_handleTap(包装:flutter/src/material/ink_well.dart:992:19)#5_InkResponseState.build链接响应状态<匿名关闭>(包:flutter/src/material/ink_well.dart:1098:38)#6 GestureRecognizer.invokeCallback(软件包:flutter/src/skets/recognizer.dart:184:24)#7 TapGestureRecognizer.handleTapUp(软件包:flutter/src/skets/tap.dart:524:11)#8个BaseTapGestureRecognizer_checkUp(软件包:flutter/src/sgestures/tap.dart:284:5)#9 BaseTapGestureRecognizer.handlePrimaryPointer(软件包:flutter/src/sgestures/tap.dart:219:7)#10 PrimaryPointerGestureRecognizer.handleEvent(软件包:flutter/src/skets/recognizer.dart:477:9)#11指针路由器_分派(package:flutter/src/skets/pointer_router.dart:78:12)#12指针路由器_将事件发送到路线<匿名闭包>(package:flutter/src/skets/pointerrouter.dart:124:9)#13_LinkedHashMapMixin.forEach(dart:收集补丁/compact_hash.dart:377:8)#14指针路由器_dispatchEventToRoutes(软件包:flutter/src/gets/pointer_router.dart:122:18)#15 PointerRouter.route(软件包:flutter/src/skets/pointer_router.dart:108:7)#16 GestureBinding.handleEvent(软件包:flutter/src/skets/binding.dart:220:19)#17 GestureBinding.dispatchEvent(软件包:flutter/src/skets/binding.dart:200:22)#18手势绑定_handlePointerEvent(package:flutter/src/skets/binding.dart:158:7)#19手势绑定_flushPointerEventQueue(包:flutter/src/gets/binding.dart:104:7)#20手势装订_handlePointerDataPacket(包:flutter/src/skets/binding.dart:88:7)#24_invoke1(省道:ui/hooks.省道:267:10)#25 _发送指针数据包(dart:ui/hooks.dart:176:5)(省去了dart中的3帧:异步)处理程序:“onTap”识别器:点击手势识别器#f0104════════════════════════════════════════════════════════════════════════════════════════════════════════════ 手势捕捉到异常═══════════════════════════════════════════════════════════════处理手势时引发了以下FirebaseException:[core/no-app]未创建任何Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp()
2
  • 您现在应该使用仅飞镖初始化Firebase的方法。 评论 2021年12月31日8:23
  • 我通过将pubspec.yaml中的所有包更新到最新版本来解决这个问题。 评论 2023年3月17日5:56

28个答案28

重置为默认值
848
答案推荐人谷歌云集体

自2020年8月17日开始

所有Firebase版本都已更新,现在您必须调用Firebase.initializeApp()在使用任何Firebase产品之前,例如:

首先,所有Firebase产品现在都依赖于firebase核心版本(0.5.0+),因此需要将其添加到山药文件:

依赖项:颤振:sdk:颤振firebase_core:^0.5.0#cloud_firestore:^0.14.0其他firebase依赖项

那你得打电话Firebase.initializeApp():

第一个示例

导入“package:flutter/material.dart”;//导入firebase_core插件导入“package:firebase_core/firebase_core.dart”;空main(){运行应用程序(应用程序());}类应用程序扩展了StatelessWidget{@覆盖小工具构建(BuildContext上下文){return FutureBuilder(//初始化FlutterFire未来:Firebase.initializeApp(),生成器:(上下文,快照){//检查是否有错误if(snapshot.hasError){return SomethingWentWrong();}//完成后,显示您的应用程序if(snapshot.connectionState==connectionState.done){return MyAwesomeApp();}//否则,在等待初始化完成时显示一些内容return Loading();},);}}

Firestore的第二个示例:

导入“package:cloud_firestore/cloud_firestore.dart”;导入“package:flutter/material.dart”;导入“package:firebase_core/firebase_core.dart”;void main()=>runApp(MyApp());类MyApp扩展StatelesWidget{//这个小部件是应用程序的根。@覆盖小工具构建(BuildContext上下文){返回MaterialApp(debugShowCheckedModeBanner:错误,主题:主题数据(primarySwatch:颜色。蓝色,),home:FirstRoute(标题:“First Route”),);}}类FirstRoute扩展了StatefulWidget{FirstRoute({Key-Key,this.title}):超级(Key:Key);最终字符串标题;@覆盖_第一路由状态createState()=>第一路由状态();}class _FirstRouteState扩展状态{@覆盖无效initState(){super.initState();}@覆盖小工具构建(BuildContext上下文){返回脚手架(appBar:appBar(标题:文本(“测试”),),正文:FutureBuilder(未来:getData(),构建器:(上下文,AsyncSnapshot<DocumentSnapshot>快照){if(snapshot.connectionState==connectionState.done){return列(儿童:[集装箱(高度:27,child:文本(“名称:${snapshot.data.data()['Name']}”,溢出:TextOverflow.fade,style:TextStyle(字体大小:20),),),],);}else if(snapshot.connectionState==connectionState.none){return Text(“无数据”);}return CircularProgressIndicator();},));}未来<DocumentSnapshot>getData()异步{等待Firebase.initializeApp();返回等待FirebaseFirestore.instance.collection(“用户”).doc(“文档ID”).get();}}

第三个示例:

在中初始化初始化状态()然后打电话设置状态()它将调用构建()方法。

@覆盖无效initState(){super.initState();Firebase.initializeApp().whenComplete((){打印(“已完成”);setState((){});});}

第四个示例:

在中初始化main()调用后的方法小工具FlutterBinding.ensureInitialized();

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();运行应用程序(MyApp());}

注释:您只需打电话初始化应用程序()一旦

26
  • 127
    应该是第四个例子。只需记住添加异步。我想知道延迟是否明显。
    – 莱德
    评论 2020年8月21日22:15
  • 27
    是的,第四个示例是最好的一个,只是想展示所有方法,第二个示例也很好,因为您可以在从同一个FutureBuilder中的firestore或实时数据库获取第一个数据之前进行初始化 评论 2020年8月21日22:23
  • 8
    谢谢,它可以使用#4。但是,如果您按下“后退”按钮,当您返回应用程序时,它会显示相同的内容“没有创建Firebase应用程序‘[DEFAULT]’-调用Firebase.initializeApp()”,即使它位于main()中 评论 2020年8月23日2:59
  • 5
    @颤振框架MichaelDiCioccio使用小部件绑定来与颤振引擎交互。当你打电话时确保初始化它创建了小工具绑定从那以后Firebase.initializeApp()需要使用平台通道调用本机,然后需要初始化绑定。api.flutter.dev/fulter/widgets/WidgetsFlutterBinding/…(平台通道位于颤振发动机中) 评论 2020年9月2日3:52
  • 10
    #4似乎无法与Providers一起使用(与最初的错误消息相同) 评论 2020年9月11日10:20
195
  1. 添加到pubspec.yaml

    firebase_core:
  2. 添加到main.dart

    导入“package:firebase_core/firebase_core.dart”;void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();运行应用程序(MyApp());}
9
  • 这些行将给出:lib/main.dart:6:9:错误:找不到Getter:“Firebase”。等待Firebase.initializeApp()^^^^^^^^ 评论 2020年8月26日8:24
  • 我忘记导入firebase_core。做到了。现在:这些行将给出:E/flutter(24294):[ERROR:flutter/lib/ui/ui_dart_state.cc(166)]未处理的异常:[core/no-app]没有创建Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp() 评论 2020年8月26日8:33
  • 上面写着firebase.google.com/support/release-notes/android那就是:不再需要Firebase Android库Firebase核心。此SDK包括用于Google Analytics的Firebase SDK。现在,要使用分析或推荐使用分析的产品(请参阅下表),您需要显式添加分析依赖项:com.google.firebase:firebase-Analytics:17.5.0或com.goole.firebase:firebase-Analytics-ktx:17.5.0。 评论 2020年8月26日8:39
  • 1
    如果initializeApp会崩溃怎么办?应用程序将不会启动。我没有发现关于这个可能的问题的任何信息。 评论 2020年9月15日5:51
  • 1
    @鲍里斯·萨利莫夫因为初始化应用程序()是异步调用,即使失败,应用程序仍将启动
    – 21瓦
    评论 2020年9月21日11:48
37

Dart-only初始化(推荐)

  • 使用CLI在所有平台上初始化Firebase。

  • 无需添加任何本机代码。

  • 无需下载任何谷歌服务文件。

  1. 安装FlutterFire CLI

    dart pub全局激活fluterfire_cli
  2. (可选)将以下行添加到您的~/.zshrc文件并保存

    export PATH=“$PATH”:“$HOME/.pub-cache/bin”
  3. 运行配置:

    扑火配置
  4. 按下进入配置所有平台

    在此处输入图像描述

  5. 你现在应该有一个lib/firebase选项.dart文件。将此文件导入您的主要零件和使用Firebase.initialize应用程序.

    导入'firebase_options.dart';void main()异步{小工具FlutterBinding.ensureInitialized();//这是您最不需要添加的内容。等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform,);runApp(…);}

正在迁移到仅Dart初始化:

如果您已经有一个现有的应用程序,您可以通过以下方式迁移它。

  • 安卓:

    1. 删除谷歌服务.json文件来自<fltter-project>/android/app:

      在此处输入图像描述

    2. 删除中的以下行<fltter-project>/android/build.gradle文件

      在此处输入图像描述

    3. 删除中的以下行<fltter-project>/android/app/build.gradle文件

      在此处输入图像描述

  • 网间网操作系统

    正常开放<fltter-project>/ios/Runner.xcworkspace文件并删除谷歌服务信息.plist来自Runner的文件。

    在此处输入图像描述

  • macOS系统

    正常开放<fltter-project>/macos/Runner.xcworkspace文件并删除谷歌服务信息.plist来自Runner的文件。

    在此处输入图像描述

可以找到更多信息在这里

8
  • 1
    这是我找到的唯一可行的解决方案,非常感谢!我使用的是基于平台的方法,从未意识到新的实现。一旦我尝试添加Ios应用程序,我就犯了这个错误,创建了一个新项目,然后解决了这个问题。
    – 拉杰什
    评论 2022年8月8日15:33
  • 我无法导入“firebase_options.dart”;也找不到DefaultFirebaseOptions.currentPlatform。有什么要更新的吗? 评论 2022年9月30日14:56
  • @SwetaJain是firebase_options.零件第4步后生成的文件? 评论 2022年9月30日15:22
  • 2
    这个firebase cli解决方案也是我发现的最好的。您可以在此处找到颤振文档:firebase.google.com/docs/flutter/setup
    – 多里安
    评论 2023年2月23日10:17
  • 就我而言,我还必须安装firebase-tools才能实现这一点。无论如何,这是唯一对我有效的方法:)。(2023年2月27日)
    – 着色器
    评论 2023年2月27日16:36
20

如果你跟随彼得的回答并且仍然出现相同的错误,请检查以确保您的主要的函数位于等待Firebase.initializeApp()这样打电话:

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);FlutterError.oError=FirebaseCrashlytics实例记录FlutterError;运行应用程序(MyApp());}
0
20

自2017年8月以来,所有Firebase服务都已更新,因此您必须在主目录中调用Firebase.initializeApp()才能使用任何Firebase产品,例如:

如果您想在flutter应用程序中使用firebase_core插件,那么在pubspec.yaml文件中添加firebase_core,如下所示

依赖项:颤振:sdk:颤振firebase_core:^1.19.1

然后在应用程序中调用Firebase.initializeApp():。与以下内容相同:

导入“package:firebase_core/firebase_core.dart”;void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();运行应用程序(MyApp());}
0
17

首先,添加此依赖项:

firebase_core:

第二:在项目主函数中,添加这两行并使函数异步:

void main()异步{//这两条线小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();//运行应用程序(MyApp());}

现在,您可以在项目中的任何文件或小部件中正常使用Firebase。

这个未来建筑商小部件也可以工作,但每次您想访问Firebase时都必须添加它。

11

自Flutter版本2.8,现在可以使用Firebase.initializeApp函数从所有平台上的Dart初始化FlutterFire。有一种更简单、更快的方法来初始化firebase项目,而不是从firebases控制台下载.json和.plist文件,然后将它们放在Flutter项目文件夹中,这可能会导致多个警告。这是一个我经历过多次的问题,下面是我如何解决它的。

在firebase控制台中创建项目后在此处执行步骤并安装了Firebase CLI在这里,请继续执行以下步骤:

如果您已经用fltterfire配置了firebase项目,那么可以跳过步骤1,跳到步骤4。

  1. 从项目根终端,命令:

    $fltterfire配置//这需要Firebase CLI才能工作。
  2. 点击return或enter选择firebase项目。

  3. 插入捆绑包ID。您可以通过右键单击ios文件夹>,然后单击“在xcode中打开”来获得。Bundle Identifier(捆绑标识符)将显示在右侧的白色面板中,当出现提示时,您必须手动在终端中键入该标识符。

**如果您已经安装了firebase_core插件,请继续执行步骤5**

  1. 通过从项目根目录运行以下命令,安装firebase_core插件的最新版本:

    $flutter pub add firebase_core//添加到pubspec.yaml
  2. 将导入添加到主文件:

    import'包:firebase_core/firebase_core.dart';//导入'firebase_options.dart';//生成的文件
  3. 更新您的主函数以使用此异步函数初始化firebase:

    未来<void>main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform);runApp(const YourAppName());}

有关更多信息,请参阅FlutterFire文档。

2
  • 我缺少要导入的“firebase_options.dart”文件。谢谢你的回答。 评论 2023年12月13日23:44
  • 我已经尝试过这种方法,但没有为flutter web上的firebase_messaging工作(尽管ios和android很好) 评论 2月15日16:46
11

彼得的回答很 完美,但是如果您的代码中仍然会出现错误,请按照Flutter Firebase代码实验室,请注意,截至2020年8月,这些教程已经过时,尚未更新。

您需要进行许多其他更改,如:

  • 代替.数据具有.data()
  • 代替更新数据具有更新
0
10

使用Firebase的Flutter Web

如果您在Firebase中使用Flutter Web,请确保在身体您的标签./web/index.html

<script src=“https://www.gstatic.com/firebasejs/8.2.9/firebase-app.js“></script><script src=“https://www.gstatic.com/firebasejs/8.2.9/firebase-analytics.js“></script>

此外,确保您致电firebase.initializeApp(…)中的配置参数索引.html也。

<脚本>//您的web应用程序的Firebase配置//对于Firebase JS SDK v7.20.0及更高版本,measurementId是可选的var firebaseConfig={apiKey:“AIz…”,authDomain:“…”,数据库URL:“https://<project-name>.firebaseio.com”,项目ID:“…”,storageBucket:“<project-name>.appspot.com”,messagingSenderId:“…”,appId:“…”,measurementId:“…”};firebase.initializeApp(firebaseConfig);firebase.analytics();</script>

最后按中所述配置firebase彼得·哈达德的回答:

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();运行应用程序(MyApp());}
  • 这并不能安全地将敏感数据放在.html中 评论 2021年4月9日15:30
  • @user7856586在这种情况下,您认为敏感数据是什么?
    – 延斯
    评论 2021年4月10日7:58
  • 1
    对不起,我的意思是我们还应该修正Gcloud上的规则,因为在html文件中存储裸体数据是不安全的。在这里 评论 2021年4月12日8:32
9

您需要添加等待Firebase.initializeApp();这是一个未来。在运行Firebase函数的dart文件中执行此操作,如下所示:

导入“package:firebase_core/firebase_core.dart”;...未来<void>main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();运行应用程序(材料应用程序());}
7

如果你把应用程序留在主屏幕上时仍然有问题,你可以把它添加到任何东西中.省道使用Firebase的文件:

类应用程序扩展了StatelessWidget{final Future<FirebaseApp>_initialization=Firebase.initializeApp();@覆盖小工具构建(BuildContext上下文){

或者在状态控件:

导入“package:flutter/material.dart”;//导入firebase_core插件导入“package:firebase_core/firebase_core.dart”;空main(){运行应用程序(应用程序());}类应用程序扩展StatefulWidget{_应用状态createState()=>应用状态();}类_AppState扩展了状态{//将默认`_initialized`和`_error`状态设置为falsebool初始化=false;bool_error=false;//定义一个异步函数来初始化FlutterFirevoid initializeFlutterFire()异步{尝试{//等待Firebase初始化并将`_initialized`状态设置为true等待Firebase.initializeApp();设置状态((){_initialized=true;});}捕捉(e){//如果Firebase初始化失败,请将`_error`状态设置为true设置状态((){_error=true;});}}@覆盖无效initState(){initializeFlutterFire();super.initState();}@覆盖小工具构建(BuildContext上下文){//如果初始化失败,则显示错误消息if(错误){return SomethingWentWrong();}//在FlutterFire初始化之前显示加载程序if(!_初始化){return Loading();}return MyAwesomeApp();}}

有关更多信息,请查看这个链接.

1
  • 4
    即使我执行与文档相同的过程,我也会收到错误。这是错误尚未创建任何Firebase应用程序“[DEFAULT]”-调用Firebase.initializeApp()。我已经在有状态小部件中初始化了Firebase。 评论 2020年9月22日13:52
5

这是2022年初始化firebase的方法

首先,使用此链接安装FlutterFire==>颤振消防装置连接

安装FlutterFire后,需要在lib/main.dart文件中添加这些代码行

导入“package:firebase_core/firebase_core.dart”;导入'firebase_options.dart';

然后按如下方式编辑主功能

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform,);运行应用程序(MyApp());}

这在将来可能会发生变化,因此请参阅以下链接以获取最新的实施参考

初始化FlutterFire#

1
  • 仍然得到错误。
    – 科菲
    评论 2023年3月30日20:36
5

你应该打电话等待Firebase.initializeApp();在应用程序中使用任何Firebase代码之前:

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();运行应用程序(MyApp());}

请考虑,如果您将该行放入另一种方法中:

未来<void>configure()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp();//更多代码。。。}

别忘了添加等待子句调用该方法时:

void main()异步{等待配置();runApp(const MyApp());}

因为方法运行应用程序在执行等待Firebase.initializeApp();configure方法中的行


记住添加firebase_core:^2.13.0打包到山药文件:

依赖项:firebase_core:^2.13.0#firebase_auth:^4.6.1或其他firebase包

并导入防火带芯包装:

导入“package:firebase_core/firebase_core.dart”;

4

在大多数情况下,在将项目从旧的Flutter版本升级到null安全后会发现此问题。应检查以下事项:

确保在pubscpe.yaml中有firebase-core

导入firebase核心:

导入“package:firebase_core/firebase_core.dart”;

在任何调用之前初始化Firebase-最好在main.dart中,以便在任何其他实现之前执行:

小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform,);

来自官方文档.

  • 2
    我这样做了,但在标题中仍然出现了相同的错误,我遵循了颤振火焰配置命令。请告知 评论 2022年10月12日11:48
  • 所有的答案都是重复同样的事情,重复同样的事也不管用。哈!
    – 科菲
    评论 2023年3月30日20:37
  • 正是@KhoPhi。。。。对我来说也没用。。。(仅限flutter web,iOS和Android可以) 评论 2月15日16:49

我需要用FlutterFire cli重新配置Firebase应用程序。

https://firebase.flotter.dev/docs/cli

  1. 通过NPM安装firebase-tool:npm安装-g firebase-tools
  2. 安装防火挡板:dart pub全局激活fluterfire_cli
  3. 运行此命令以配置项目中的firebase:扑火配置

按照上述链接进行初始化,如下所示:

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform);runApp(const MyApp());}

作为等待调用,该应用程序将显示闪屏,Firebase可能无法初始化,因此我接下来使用另一个FutureBuilder屏幕以确保在我使用FirebaseAuth之前已初始化Firebase应用程序。

主页:FutureBuilder(未来:Firebase.initializeApp(),生成器:(上下文,快照){if(snapshot.hasError){return Text(snapshot.error.toString(),样式:TextStyle(fontSize:10));}if(snapshot.connectionState==connectionState.done){return StreamBuilder(流:FirebaseAuth.instance.authStateChanges(),生成器:(上下文,快照){返回快照。是否有数据?主页():AuthPage();},);}其他{return Text(“”);}})
1

确保您使用的是firebase包的正确/官方版本。

我正在使用:

firebase_core_dart:<版本号>

地点:https://pub.dev/packages/firebase_core_dart网站

而不是官方

firebase_core:<版本号>

https://pub.dev/packages/firebase_core网站

使用第一个选项,我在使用时初始化了:

等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform,).何时完成(()=>打印(“FIREBASE INITIALIZED============>”);

但身份验证失败,出现OP描述的错误消息。

2

您可以在中进行初始化主零件使用未来建筑商.

未来:Firebase.initializeApp(),

看看这个例子。

空main(){运行应用程序(应用程序());}类应用程序扩展了StatelessWidget{@覆盖小工具构建(BuildContext上下文){return FutureBuilder(//初始化FlutterFire未来:Firebase.initializeApp(),生成器:(上下文,快照){返回MaterialApp(debugShowCheckedModeBanner:错误,title:'NEWSAPI.org',主页:SplashScreen(),路由:<String,WidgetBuilder>{SPLASH_SCREEN:(BuildContext上下文)=>SplashScreen(),},);},);}}
1
  • 4
    解释一下就好了。例如,想法/要点是什么?请回复编辑您的答案,不在评论中(没有“编辑:”、“更新:”或类似的内容——答案应该看起来像今天写的一样)。 评论 2021年4月17日14:27
2

我想发表评论。但这个问题有很多线索。就我的情况而言。

我在Firebase之前初始化Injection Container。需要检查层次结构。

Hive.init(directory.path);等待Firebase.initializeApp();//之前等待di.init();
2

使用firebase选项初始化

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform).catchError((e){打印(“错误:${e.toString()}”);});}
2

尝试以下代码。它将解决IOS和Android的问题。

导入“dart:io”;导入“package:firebase_core/firebase_core.dart”;void main()异步{小工具FlutterBinding.ensureInitialized();if(Platform.isIOS){等待Firebase.initializeApp(选项:const FirebaseOptions(apiKey:“在您的google service-info.plist中找到”,appId:“在您的google service-info.plist中找到”,messagingSenderId:“在firebase中找到”,projectId:“在firebase中找到”),);}其他{等待Firebase.initializeApp();}runApp(const MyApp());}
1
  • 它不起作用。而且您不能将Platform.isIOS用于web。 评论 5月31日9:29
2

对于Flutter用户

如果您正确设置了Firebase,请不要忘记添加

等待

之前

Firebase.initializeApp();

这主要是该例外的问题所在。既然这是未来,那么就这样做:

未来<void>main()异步{等待Firebase.initializeApp();
1

你需要添加等待FirebaseApp.initializeApp()记住在main函数中添加wait

1

在我的案例中,我在我的现有的项目。解决这个问题的一件事是,

web/index.html文件

更改逼真属于所有firebase sdk导入9.6.68.10.0

代码段

<script src=“https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js“></script><script src=“https://www.gstatic.com/firebasejs/8.10.0/firebase-app-check.js“></script><script src=“https://www.gstatic.com/firebasejs/8.10.0/firebase-firestore.js“></script><script src=“https://www.gstatic.com/firebasejs/8.10.0/firebase-auth.js“></script><script src=“https://www.gstatic.com/firebasejs/8.10.0/firebase-storage.js“></script><script src=“https://www.gstatic.com/firebasejs/8.10.0/firebase-messaging.js“></script><脚本>var firebaseConfig={....}
1

如果您正在处理一个预配置了firebase_core的项目,然后尝试添加新的包,则会出现该错误。

您必须先删除firebase_core:然后保存文件并通过flutch pub添加firebase核心然后扑火配置.

然后您可以添加任何新的程序包。

1
  • 不。我开始了一个新的空白项目,但错误仍然不断出现
    – 科菲
    评论 2023年3月30日20:38
1

使用如下firebase选项进行初始化:

void main()异步{小工具FlutterBinding.ensureInitialized();等待Firebase.initializeApp(选项:DefaultFirebaseOptions.currentPlatform).catchError((e){打印(“错误:${e.toString()}”);});}
1
  • 1
    您的答案可以通过其他支持信息加以改进。拜托编辑添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是否正确。你可以找到更多关于如何写出好答案的信息在帮助中心.
    – 社区 机器人程序
    评论 2022年2月28日16:11
1

在我的案例中,我通过在

android/app/build.gradle。

应用插件:“com.google.gms.google-services”

0

在我的例子中,这是因为对于Web版本,您必须手动在索引.html文件,不仅是.js依赖项,还有配置。请参见Web安装.

我们往往会忘记,对于大多数东西来说,Flutter是编译到目标的,而不需要更改任何特定于目标的内容,但在这种情况下,必须为每个目标添加配置。

0

将此用于颤振:

常量firebaseConfig={apiKey:“”,authDomain:“”,项目ID:“”,storageBucket:“”,消息发送者ID:“”,appId:“”,度量值ID:“”};//初始化Firebasefirebase.initializeApp(firebaseConfig);firebase.getAnalytics(应用程序);

而不是这样

const firebaseConfig={apiKey:“”,authDomain:“”,项目ID:“”,storageBucket:“”,消息发送者ID:“”,appId:“”,度量Id:“”};//初始化Firebaseconst app=initializeApp(firebaseConfig);const分析=getAnalytics(app);

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.