Flutter: [core/no-app] 没有创建 Firebase 应用 '[DEFAULT]' - 请调用 Firebase.initializeApp()。
Flutter: [core/no-app] 没有创建 Firebase 应用 '[DEFAULT]' - 请调用 Firebase.initializeApp()。
我正在开发一个Flutter应用程序,我已经集成了Firebase,但是当我单击按钮进行注册、登录或注销时,我一直会遇到这个错误。我已经看到其他人问了同样的问题,但是没有一个似乎适用于我。我正在使用Flutter和Android Studio。我该如何解决这个问题?
以下是我的代码摘录
class HomeScreen extends StatefulWidget { @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScreenState extends State { @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"), ) ) ) ); } }
以下是抛出的异常
══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════ The following FirebaseException was thrown while handling a gesture: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp() When the exception was thrown, this was the stack: #0 MethodChannelFirebase.app (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:118:5) #1 Firebase.app (package:firebase_core/src/firebase.dart:52:41) #2 FirebaseAuth.instance (package:firebase_auth/src/firebase_auth.dart:37:47) #3 _HomeScreenState.build. (package:cosytok/screens/home.dart:20:28) #4 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19) #5 _InkResponseState.build. (package:flutter/src/material/ink_well.dart:1098:38) #6 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24) #7 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11) #8 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5) #9 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7) #10 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9) #11 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12) #12 PointerRouter._dispatchEventToRoutes. (package:flutter/src/gestures/pointer_router.dart:124:9) #13 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8) #14 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18) #15 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7) #16 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19) #17 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22) #18 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7) #19 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7) #20 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7) #24 _invoke1 (dart:ui/hooks.dart:267:10) #25 _dispatchPointerDataPacket (dart:ui/hooks.dart:176:5) (elided 3 frames from dart:async) Handler: "onTap" Recognizer: TapGestureRecognizer#f0104 ════════════════════════════════════════════════════════════════════════════════════════════════════ ════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════ The following FirebaseException was thrown while handling a gesture: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
admin 更改状态以发布 2023年5月22日
从2020年8月17日开始
所有Firebase版本都已更新,现在在使用任何Firebase产品之前,您必须调用 Firebase.initializeApp()
,例如:
首先,现在所有Firebase产品都依赖于 firebase_core
版本 (0.5.0+),因此您需要在 pubspec.yaml
文件中添加它:
dependencies: flutter: sdk: flutter firebase_core : ^0.5.0 # cloud_firestore: ^0.14.0 other firebase dependencies
然后您必须调用 Firebase.initializeApp()
:
第一个示例
import 'package:flutter/material.dart'; // Import the firebase_core plugin import 'package:firebase_core/firebase_core.dart'; void main() { runApp(App()); } class App extends StatelessWidget { @override Widget build(BuildContext context) { return FutureBuilder( // Initialize FlutterFire future: Firebase.initializeApp(), builder: (context, snapshot) { // Check for errors if (snapshot.hasError) { return SomethingWentWrong(); } // Once complete, show your application if (snapshot.connectionState == ConnectionState.done) { return MyAwesomeApp(); } // Otherwise, show something whilst waiting for initialization to complete return Loading(); }, ); } }
使用Firestore的第二个示例:
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.blue, ), home: FirstRoute(title: 'First Route'), ); } } class FirstRoute extends StatefulWidget { FirstRoute({Key key, this.title}) : super(key: key); final String title; @override _FirstRouteState createState() => _FirstRouteState(); } class _FirstRouteState extends State{ @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("test"), ), body: FutureBuilder( future: getData(), builder: (context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.done) { return Column( children: [ Container( height: 27, child: Text( "Name: ${snapshot.data.data()['name']}", overflow: TextOverflow.fade, style: TextStyle(fontSize: 20), ), ), ], ); } else if (snapshot.connectionState == ConnectionState.none) { return Text("No data"); } return CircularProgressIndicator(); }, )); } Future getData() async { await Firebase.initializeApp(); return await FirebaseFirestore.instance .collection("users") .doc("docID") .get(); } }
第三个示例:
在 initState()
中进行初始化,然后调用 setState()
,它将调用 build()
方法。
@override void initState() { super.initState(); Firebase.initializeApp().whenComplete(() { print("completed"); setState(() {}); }); }
第四个示例:
在调用 WidgetsFlutterBinding.ensureInitialized();
后,在 main()
方法中进行初始化。
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }