[英]No Firebase App '[Default]' error but firebase is already initialized
Every time I try to run my flutter app that has been previously working, I get No Firebase App '[Default]'
error.每次我尝试运行之前运行的 flutter 应用程序时,我都会收到
No Firebase App '[Default]'
错误。 I have this project connected to my GitHub and I downloaded a different version and it seemed to work fine, so I thought to revert my main repo to that commit, and then the same thing happened again.我有这个项目连接到我的 GitHub 并且我下载了一个不同的版本,它似乎工作正常,所以我想将我的主仓库恢复到那个提交,然后同样的事情又发生了。 I did a git compare and found no differences in the files, which made it hard to find out what was happening.
我做了一个 git 比较,发现文件没有差异,这使得很难找出发生了什么。
Error caught in the debug console在调试控制台中发现错误
════════ Exception caught by widgets library ═══════════════════════════════════
The following FirebaseException was thrown building FutureBuilder<FirebaseApp>(dirty, state: _FutureBuilderState<FirebaseApp>#d30ed):
[core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
The relevant error-causing widget was
FutureBuilder<FirebaseApp>
package:mynotes/main.dart:105
When the exception was thrown, this was the stack
#0 MethodChannelFirebase.app
package:firebase_core_platform_interface/…/method_channel/method_channel_firebase.dart:193
#1 Firebase.app
package:firebase_core/src/firebase.dart:53
#2 FirebaseAuth.instance
package:firebase_auth/src/firebase_auth.dart:38
#3 Setup.build.<anonymous closure>
package:mynotes/main.dart:110
#4 _FutureBuilderState.build
package:flutter/…/widgets/async.dart:615
#5 StatefulElement.build
package:flutter/…/widgets/framework.dart:4919
#6 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4806
#7 StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4977
#8 Element.rebuild
package:flutter/…/widgets/framework.dart:4529
#9 BuildOwner.buildScope
package:flutter/…/widgets/framework.dart:2659
#10 WidgetsBinding.drawFrame
package:flutter/…/widgets/binding.dart:891
#11 RendererBinding._handlePersistentFrameCallback
package:flutter/…/rendering/binding.dart:370
#12 SchedulerBinding._invokeFrameCallback
package:flutter/…/scheduler/binding.dart:1146
#13 SchedulerBinding.handleDrawFrame
package:flutter/…/scheduler/binding.dart:1083
#14 SchedulerBinding._handleDrawFrame
package:flutter/…/scheduler/binding.dart:997
#18 _invoke (dart:ui/hooks.dart:151:10)
#19 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#20 _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)
════════════════════════════════════════════════════════════════════════════════
Main.dart主.dart
import 'dart:io';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_phoenix/flutter_phoenix.dart';
import 'package:hive_flutter/adapters.dart';
import 'package:mynotes/constants/routes.dart';
import 'package:mynotes/services/auth/auth_service.dart';
import 'package:mynotes/services/auth/auth_user.dart';
import 'package:mynotes/services/hive/boxes.dart';
import 'package:mynotes/services/hive/settings_service.dart';
import 'package:mynotes/themes/themes.dart';
import 'package:mynotes/views/forgot_password_view.dart';
import 'package:mynotes/views/login_view.dart';
import 'package:mynotes/views/notes/create_update_note_view.dart';
import 'package:mynotes/views/main_ui.dart';
import 'package:mynotes/views/register_view.dart';
import 'package:mynotes/views/settings_view.dart';
import 'package:mynotes/views/verify_email_view.dart';
import "dart:developer" as devtools show log;
const double sizedBoxWidth = 300;
const double sizedBoxHeight = 300;
late Color textColor;
// const Color themeColor = Color.fromRGBO(85, 111, 68, 1);
const Color bgColor = Color.fromRGBO(20, 20, 20, 1);
const Color themeColor = Color.fromARGB(255, 107, 65, 114);
//const Color bgColor = Color.fromARGB(255, 31, 31, 31);
late ThemeData currentTheme;
const Color defTextColor = Colors.white;
dynamic loadingCircle;
late Icon shareIcon;
//Creates an empty sized box for sapce
SizedBox createSpace(double height) {
return SizedBox(height: height);
}
SizedBox createSpaceWidth(double height, double width) {
return SizedBox(
height: height,
width: width,
);
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Hive.initFlutter();
Hive.registerAdapter(UserSettingsAdapter());
await Hive.openBox<UserSettings>("user_settings");
//Allows for app restart for themes
runApp(Phoenix(child: const HomePage()));
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final box = Boxes.getUserSettings();
//Making sure a first time user has the theme setting
if (box.containsKey("defaultKey")) {
if (box.get("defaultKey", defaultValue: UserSettings("Purple"))!.theme ==
"Green") {
currentTheme = MyThemes.greenTheme;
textColor = Colors.white;
} else if (box.get("defaultKey")!.theme == "White") {
currentTheme = MyThemes.lightTheme;
textColor = Colors.black;
} else {
currentTheme = MyThemes.purpleTheme;
textColor = Colors.white;
}
} else {
box.put("defaultKey", UserSettings("Purple"));
currentTheme = MyThemes.purpleTheme;
textColor = Colors.white;
}
return MaterialApp(
title: 'Flutter Demo',
theme: currentTheme,
debugShowCheckedModeBanner: false,
home: const Setup(),
routes: {
loginRoute: (context) => const LoginView(),
registerRoute: (context) => const RegisterView(),
notesRoute: (context) => const MainUIView(),
verifyRoute: (context) => const VerifyEmailView(),
createOrUpdateNoteRoute: (context) => const CreateUpdateNoteView(),
forgotPasswordViewRoute: (context) => const ForgotPasswordView(),
settingsRoute: (context) => const SettingsView(),
homeRoute: (context) => const HomePage(),
},
);
}
}
class Setup extends StatelessWidget {
const Setup({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Firebase.initializeApp(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.done:
final user = FirebaseAuth.instance.currentUser;
if (user != null) {
if (user.emailVerified) {
return const MainUIView();
} else {
devtools.log(user.toString());
return const VerifyEmailView();
}
} else {
return const LoginView();
}
default:
if (Platform.isIOS) {
loadingCircle = const CupertinoActivityIndicator();
shareIcon = const Icon(Icons.ios_share);
} else {
loadingCircle = const CircularProgressIndicator();
shareIcon = const Icon(Icons.share);
}
return Scaffold(
body: Center(
child: SizedBox(
width: sizedBoxWidth,
height: sizedBoxHeight,
child: Center(child: loadingCircle),
),
),
);
}
},
);
}
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
//initialize it here
await Firebase.initializeApp(),
await Hive.initFlutter();
Hive.registerAdapter(UserSettingsAdapter());
await Hive.openBox<UserSettings>("user_settings");
//Allows for app restart for themes
runApp(Phoenix(child: const HomePage()));
}
static Future<FirebaseApp?> initialize() async {
await Firebase.initializeApp(
options: kIsWeb
? const FirebaseOptions(
appId: appId,
authDomain: authDomain,
apiKey: apiKey,
databaseURL: databaseURL,
projectId: projectId,
storageBucket: storageBucket,
messagingSenderId: messagingSenderId,
measurementId: measurementId,
)
: null);
return Firebase.app();
}
call it.叫它。
main() async{
await ClassName.initialize();
}
I am using it like that and it works fine.我正在使用它,它工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.