没有Firebase应用程序';[默认]';已创建-在Flatter和Firebase中调用Firebase.initializeApp()

没有Firebase应用程序';[默认]';已创建-在Flatter和Firebase中调用Firebase.initializeApp(),firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在构建一个flatter应用程序,并且我集成了Firebase,但是当我点击一个按钮注册、登录或注销时,我总是会遇到这个错误。我见过其他人问过同样的问题,但似乎没有一个适合我。我使用的是颤振和。我如何解决这个问题 这是我的代码摘录 class HomeScreen extends StatefulWidget { @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScree

我正在构建一个flatter应用程序,并且我集成了Firebase,但是当我点击一个按钮注册、登录或注销时,我总是会遇到这个错误。我见过其他人问过同样的问题,但似乎没有一个适合我。我使用的是颤振和。我如何解决这个问题

这是我的代码摘录

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.red,
      body: Center(
        child: Container(
          child: RaisedButton(
            onPressed: () {
              FirebaseAuth.instance.signOut().then((value) {
                Navigator.pushReplacement(
                    context,
                    MaterialPageRoute(
                        builder: (context) =>
                            LoginScreen()));
              });
            },
            child: Text("Logout"),
          )
        )
      )
    );
  }
}
类主屏幕扩展StatefulWidget{
@凌驾
_HomeScreenState createState()=>\u HomeScreenState();
}
类_homescrenstate扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.red,
正文:中(
子:容器(
孩子:升起按钮(
已按下:(){
FirebaseAuth.instance.signOut().then((值){
导航器。更换(
上下文
材料路线(
生成器:(上下文)=>
LoginScreen());
});
},
子项:文本(“注销”),
)
)
)
);
}
}
下面是抛出的异常

══╡ 用手势捕捉异常╞═══════════════════════════════════════════════════════════════════
处理手势时引发了以下FirebaseException:
[核心/无应用程序]未创建Firebase应用程序“[默认]”-调用Firebase.initializeApp()
引发异常时,这是堆栈:
#0 MethodChannelFirebase.app(包:firebase\u core\u platform\u interface/src/method\u channel/method\u channel\u firebase.dart:118:5)
#1 Firebase.app(包:Firebase_core/src/Firebase.dart:52:41)
#2 FirebaseAuth.instance(包:firebase\u auth/src/firebase\u auth.dart:37:47)
#3_homescrenstate.build。(套餐:cosytok/screens/home.省道:20:28)
#4 InkResponseState.handleTap(包装:颤振/src/材料/InkWell.省道:992:19)
#5 _inkrestate.build。(包装:颤振/src/材料/墨水井。省道:1098:38)
#6 GestureRecognizer.invokeCallback(包:flatter/src/signatures/recognizer.dart:184:24)
#7 TapGestureRecognitor.HandletUp(软件包:颤振/src/手势/tap.dart:524:11)
#8 BaseTapgestureRecognitor.\u检查(包:颤振/src/手势/tap.dart:284:5)
#9 BaseTapGestureRecognizer.handlePrimaryPointer(包:颤振/src/手势/tap.dart:219:7)
#10 PrimaryPointerGestureRecognizer.handleEvent(包:flatter/src/signatures/recognizer.dart:477:9)
#11点路由器调度(包:颤振/src/signatures/pointer\u路由器。dart:78:12)
#12点外部。\u调度事件路由。(包装:颤振/src/signatures/pointer_router.省道:124:9)
#13_LinkedHashMapMixin.forEach(dart:collection patch/compact_hash.dart:377:8)
#14点路由器调度事件路由(包:flatter/src/signities/pointer\u路由器。dart:122:18)
#15 PointerRouter.route(包:flatter/src/signatures/pointer\u router.dart:108:7)
#16 GestureBinding.handleEvent(包:flatter/src/signatures/binding.dart:220:19)
#17 GestureBinding.dispatchEvent(包:flatter/src/signatures/binding.dart:200:22)
#18手势绑定._handlePointerEvent(包:flift/src/signatures/binding.dart:158:7)
#19手势绑定。_flushPointerEventQueue(包装:颤振/src/手势/绑定。省道:104:7)
#20手势绑定。_handlepointer数据包(包:flift/src/signatures/binding.dart:88:7)
#24_invoke1(省道:ui/hooks.dart:267:10)
#25_dispatchPointerDataPacket(dart:ui/hooks.dart:176:5)
(从dart中删除3帧:异步)
处理程序:“onTap”
识别器:
t手势识别器#f0104
════════════════════════════════════════════════════════════════════════════════════════════════════
════════ 用手势捕捉异常═══════════════════════════════════════════════════════════════
处理手势时引发了以下FirebaseException:
[核心/无应用程序]未创建Firebase应用程序“[默认]”-调用Firebase.initializeApp()
从2020年8月17日开始 所有Firebase版本都已更新,现在您必须在使用任何Firebase产品之前调用
Firebase.initializeApp()
,例如:

首先,所有Firebase产品现在都依赖于
Firebase_core
版本(0.5.0+),因此您需要将其添加到
pubspec.yaml
文件中:

依赖项:
颤振:
sdk:颤振
firebase_核心:^0.5.0
#cloud_firestore:^0.14.0其他firebase依赖项
然后您必须调用
Firebase.initializeApp()

第一个例子 Firestore的第二个示例: 第四个例子: 调用
WidgetsFlutterBinding.ensureInitialized()后,在
main()
方法中初始化它

注意:只需调用
initializeApp()
一次
  • 添加到pubspec.yaml

    firebase_core :
    
  • 添加到main.dart

    import 'package:firebase_core/firebase_core.dart';
    
    void main() async {
       WidgetsFlutterBinding.ensureInitialized();
       await Firebase.initializeApp();
       runApp(MyApp());
    }
    

  • 如果将应用程序保留到主屏幕时仍然存在问题,则可以使用Firebase将其添加到任何
    .dart
    文件中:

    class App extends StatelessWidget {
    
      final Future<FirebaseApp> _initialization = Firebase.initializeApp();
    
      @override
      Widget build(BuildContext context) {
    
    有关更多信息,请查看。

    非常完美!!但是,如果您的代码中仍然出现错误并遵循,请注意,这些教程在2020年8月已经过时,尚未更新

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

    void main() async {
        WidgetsFlutterBinding.ensureInitialized();
        await Firebase.initializeApp();
    
    • .data
      替换为
      .data()
    • u替换
      updateData
      firebase_core :
      
      import 'package:firebase_core/firebase_core.dart';
      
      void main() async {
         WidgetsFlutterBinding.ensureInitialized();
         await Firebase.initializeApp();
         runApp(MyApp());
      }
      
      class App extends StatelessWidget {
      
        final Future<FirebaseApp> _initialization = Firebase.initializeApp();
      
        @override
        Widget build(BuildContext context) {
      
      import 'package:flutter/material.dart';
      
      // Import the firebase_core plugin
      import 'package:firebase_core/firebase_core.dart';
      
      void main() {
        runApp(App());
      }
      
      class App extends StatefulWidget {
        _AppState createState() => _AppState();
      }
      
      class _AppState extends State<App> {
        // Set default `_initialized` and `_error` state to false
        bool _initialized = false;
        bool _error = false;
      
        // Define an async function to initialize FlutterFire
        void initializeFlutterFire() async {
          try {
            // Wait for Firebase to initialize and set `_initialized` state to true
            await Firebase.initializeApp();
            setState(() {
              _initialized = true;
            });
          } catch(e) {
            // Set `_error` state to true if Firebase initialization fails
            setState(() {
              _error = true;
            });
          }
        }
      
        @override
        void initState() {
          initializeFlutterFire();
          super.initState();
        }
      
        @override
        Widget build(BuildContext context) {
          // Show error message if initialization failed
          if(_error) {
            return SomethingWentWrong();
          }
      
          // Show a loader until FlutterFire is initialized
          if (!_initialized) {
            return Loading();
          }
      
          return MyAwesomeApp();
        }
      }
      
      firebase_core :
      
      void main() async {
          // These two lines
          WidgetsFlutterBinding.ensureInitialized();
          await Firebase.initializeApp();
      
          //
          runApp(MyApp());
      }
      
      import 'package:firebase_core/firebase_core.dart';
      ...
      
      Future<void> main() async {
        WidgetsFlutterBinding.ensureInitialized();
        await Firebase.initializeApp();
        runApp(MaterialApp());
      }
      
       future: Firebase.initializeApp(),
      
      void main() {
        runApp(App());
      }
      
      class App extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return FutureBuilder(
            // Initialize FlutterFire
            future: Firebase.initializeApp(),
            builder: (context, snapshot) {
             return MaterialApp(
                debugShowCheckedModeBanner: false,
                title: 'NEWSAPI.org',
                home: SplashScreen(),
             
                routes: <String, WidgetBuilder>{
                  SPLASH_SCREEN: (BuildContext context) => SplashScreen(),
                },);
            },
          );
        }
      }
      
        <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>
      
        <script>
          // Your web app's Firebase configuration
          // For Firebase JS SDK v7.20.0 and later, measurementId is optional
          var firebaseConfig = {
            apiKey: "AIz...",
            authDomain: "...",
            databaseURL: "https://<project-name>.firebaseio.com",
            projectId: "...",
            storageBucket: "<project-name>.appspot.com",
            messagingSenderId: "...",
            appId: "...",
            measurementId: "..."
          };
          firebase.initializeApp(firebaseConfig);
          firebase.analytics();
        </script>
      
      void main() async {
        WidgetsFlutterBinding.ensureInitialized();
        await Firebase.initializeApp();
        runApp(MyApp());
      }
      
      void main() async {
          WidgetsFlutterBinding.ensureInitialized();
          Firebase.initializeApp();
      
      void main() async {
          WidgetsFlutterBinding.ensureInitialized();
          await Firebase.initializeApp();
      
      dependencies:
        flutter:
          sdk: flutter
        firebase_core : ^1.2.0
      
      void main() async {
        WidgetsFlutterBinding.ensureInitialized();
        await Firebase.initializeApp();
        runApp(MyApp());
      }