Reputation: 73
Everything is working fine in debug mode but when I run the application in release mode, it produces this screen:
and when I try hosting the application on firebase, I get this screen:
I am not sure how to handle this error as there is not much info on this issue. But based on the "No firebase app" error, i think that the error might be in my main.dart.
void main() {
assert(() {
fb.initializeApp(
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
);
return true;
}());
WidgetsFlutterBinding.ensureInitialized();
BlocSupervisor.delegate = GeneralBlocDelegate();
runApp(MultiRepositoryProvider(
providers: [
RepositoryProvider<UserRepository>(
builder: (context) => UserRepository()),
],
child: MultiBlocProvider(providers: [
BlocProvider<AuthBloc>(
builder: (context) => AuthBloc(
userRepository: RepositoryProvider.of<UserRepository>(context))
..add(AppStarted()),
),
], child: App())));
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>my website</title>
</head>
<body>
<script src="main.dart.js" type="application/javascript"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-firestore.js"></script>
<script src="/__/firebase/7.2.2/firebase-app.js"></script>
<script src="/__/firebase/7.2.2/firebase-auth.js"></script>
<script src="/__/firebase/7.2.2/firebase-firestore.js"></script>
<script src="/__/firebase/init.js"></script>
</body>
</html>
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
firebase: ^6.0.0
flutter_bloc: ^1.0.0
equatable: ^0.6.1
font_awesome_flutter: ^8.5.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- assets/images/
Upvotes: 1
Views: 2020
Reputation: 7509
Problem 1: Using assert()
function to initialize app
You are calling the fb.initializeApp()
method inside the assert()
method which will not be called in the release build. assert
method is useful during development to add some additional checks. It should not contain or be used to handle, any functional/business logic. Check this section of the dart language tour. It states that assert method is ignored in production mode.
In production code, assertions are ignored, and the arguments to assert aren’t evaluated.
Problem 2: Missing asset information in pupspec.yaml
In your index.html
I see you are trying to load some .js
files like this /__/firebase/init.js
. Flutter build will not keep this in the build folder unless you mark it as an asset in your pubspec.yaml
.
Assuming you placed all your .js
files you need for your application in a folder named /js/init.js
like the following.
In my case I have
js/
folder parallel to thelib/
. This is my choice but you can choose which way you want it.
You need an entry like this in your pubspec.yaml
.
assets:
- js/init.js
- js/firebase-app.js
OR Just include the entire folder like this.
assets:
- js/
The same applies for all the assets like images, data json etc... Check this reference for more details.
Possible Problem 3: Incorrectly referring local .js
file in Index.html
In your index.html you are trying to load some local .js
file as mentioned earlier. I think you should load these files as shown below if you follow my suggested folder structure. You should probably edit it based on your own choice.
<script src="assets/js/init.js" type="application/javascript"></script>
<script src="assets/js/firebase-app.js" type="application/javascript"></script>
Hope his helps. Happy Fluttering.
Upvotes: 3