Reputation: 351
I am trying to run my app and it is giving the following error
[core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
I have already called firebase.initializeApp()
but still the error is same.
here is my code of main file
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => AppointmentsProvider(),
child: MaterialApp(
title: 'Car Wash App',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: FutureBuilder(
future: Firebase.initializeApp(),
builder: (ctx, snap) =>
snap.connectionState == ConnectionState.waiting
? Center(
child: Text('Loading...'),
)
: StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (ctx, snapShot) =>
snapShot.hasData ? HomePage() : UserAuth(),
),
),
routes: {
HomePage.routeName: (_) => HomePage(),
HistoryPage.routeName: (_) => HistoryPage(),
MyAppointments.routeName: (_) => MyAppointments(),
PackagesPage.routeName: (_) => PackagesPage(),
VehicleType.routeName: (_) => VehicleType(),
SlotPage.routeName: (_) => SlotPage(),
ExtraServicesPage.routeName: (_) => ExtraServicesPage(),
SummaryPage.routeName: (_) => SummaryPage(),
DetailedScreen.routeName: (_) => DetailedScreen(),
PaymentMethodScreen.routeName: (_) => PaymentMethodScreen(),
},
),
);
}
}
Any kind of help is much appreciated. Thank you
Upvotes: 11
Views: 25715
Reputation: 4749
In summary there are two solutions
Firebase.initializeApp
before you use firebaseThis error was giving me hard time on testing my app on BrowserStack. This was the stack trace
app/ios/RunnerUITests/RunnerUITests.m:5: error: -[RunnerUITests example_test Navigation to Booking WebView test] : ((passed) is true) failed - [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
#0 MethodChannelFirebase.app (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:195)
#1 Firebase.app (package:firebase_core/src/firebase.dart:79)
#2 FirebaseRemoteConfig.instance
We were also doing the Firebase.initializeApp
call
await Firebase.initializeApp(
options: FirebaseOptions(
apiKey: dotenv.env['FIREBASE_API_KEY']!,
appId: 'appID',
projectId: 'my-sample-app',
iosBundleId: 'com.sample.app.iphone',
);,
name: isTesting ? 'my-sample-app' : defaultFirebaseAppName,
);
As you can see, the name was being overridden to my-sample-app
under isTesting flag.
And this was the problem as we were trying to load an instance using FirebaseRemoteConfig.instance
and as a result it was failing as its not a default name.
/// The default Firebase application name.
const String defaultFirebaseAppName = '[DEFAULT]';
and below code checks for the default firebase app to be loaded else throws exception
FirebaseAppPlatform app([String name = defaultFirebaseAppName]) {
if (appInstances.containsKey(name)) {
return appInstances[name]!;
}
throw noAppExists(name);
}
So make sure you haven't overriden the name unless you are then calling
FirebaseRemoteConfig.instanceFor(app: Firebase.app('my-sample-app')
instead of FirebaseRemoteConfig.instance
Upvotes: 0
Reputation: 766
You should initialise it in main().
For example:
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(MyApp());
}
This link might be helpful for you.
EDIT: The first link has been archived. This is new way to setup firebase in a Flutter project. Steps are pretty same. Last link contains one more step to configure firebase plugins.
Steps are:
Upvotes: 14
Reputation: 53
1. Install this package
For installing the Firebase core package Click here
In your main.dart:-
2. Import Firebase_core package :
import 'package:firebase_core/firebase_core.dart';
3. Add these lines in your main :
void main() async{
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(myApp());
}
It worked for me hoping helpful for others too.
Upvotes: 1
Reputation: 21
Check your android/build.gradle file. Inside dependecies add
classpath 'com.google.gms:google-services:4.3.14' (use latest version)
Go to app/build.gradle file. Add the plugin outside dependencies
apply plugin: 'com.google.gms.google-services'
Upvotes: 2
Reputation: 979
This error is know to occur when you fail to add the required dependencies in both your android side of things in project and app level build.gradle files
Upvotes: 2
Reputation: 1441
If the above answers don't help, you can solve the problem by following steps:
delete the project and take backup of lib folder and pubspec.yaml file.
Create a new project with the same name
copy backed up files to the newly created project.
run flutter pub get
you are good to go
It literally solved my problem. I hope this will help.
Upvotes: 4
Reputation: 1726
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
Upvotes: 3
Reputation: 79
Firebase.initializeApp() is an asynchronous function. You should use "await" to ensure Firebase initialization. And use WidgetsFlutterBinding.ensureInitialized() to prevent flutter errors.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
Upvotes: 5