没有Firebase应用程序';[默认]';已创建-在Flatter和Firebase中调用Firebase.initializeApp()
我正在构建一个flatter应用程序,并且我集成了Firebase,但是当我点击一个按钮注册、登录或注销时,我总是会遇到这个错误。我见过其他人问过同样的问题,但似乎没有一个适合我。我使用的是颤振和。我如何解决这个问题 这是我的代码摘录没有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
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) {
有关更多信息,请选中。如果要将Firebase与颤振应用程序连接,则需要
在使用Firebase之前对其进行初始化。您可以按照下面的说明进行声明,这将帮助您解决问题:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
.太完美了!!但是,如果您的代码中仍然出现错误并遵循,请注意,这些教程在2020年8月已经过时,并且没有
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();
}
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
firebase_core :
void main() async {
// These two lines
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
//
runApp(MyApp());
}
void main() async {
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());
}