Blank Screen on running Flutter authentication
546
Add WidgetsFlutterBinding.ensureInitialized();
at first line of main function
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(AuthExampleApp());
}
You can take a look at library example https://pub.dev/packages/firebase_auth/example
Author by
Very Useless
Updated on December 29, 2022Comments
-
Very Useless over 1 year
I was trying to get authorization to work on my flutter app using Firebase but I don't know why I am getting a blank white screen on running my app.
The message attached below was the console output, but no specific red coloured urgent error message was printed out.
How do I resolve this issue?
main.dart
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'widgets/authentication_service.dart'; import 'primary_page.dart'; import 'signin_page.dart'; Future<void> main() async{ await Firebase.initializeApp(); runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MultiProvider( providers: [ Provider<AuthenticationService>( create: (_) => AuthenticationService(FirebaseAuth.instance), ), StreamProvider( create: (context) => context.read<AuthenticationService>().authStateChanges, ) ], child: MaterialApp( debugShowCheckedModeBanner: false, title: 'Flutter Auth', theme: ThemeData( primaryColor: Colors.pink, scaffoldBackgroundColor: Colors.black, textTheme: ThemeData.light().textTheme.copyWith( body1: TextStyle( color: Color.fromRGBO(0, 0, 0, 1), ), body2: TextStyle( color: Color.fromRGBO(0, 0, 0, 1), fontWeight: FontWeight.bold, ) ) ), //home: LoginPage(), home: AuthenticationWrapper(), ), ); } } class AuthenticationWrapper extends StatelessWidget { @override Widget build(BuildContext context) { final firebaseUser = context.watch<User>(); if (firebaseUser != null) { return PrimaryPage(); } return SignInPage(); } }
I am sure that SignInPage() and PrimaryPage() are working correctly. Note: I've also tried to use an older version of package:provider which did not require initialData but that returns the same blank screen.
Output in console:
E/flutter (21352): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized. E/flutter (21352): If you're running an application and need to access the binary messenger before `runApp()` has been called (for example, during plugin initialization), then you need to explicitly call the `WidgetsFlutterBinding.ensureInitialized()` first. E/flutter (21352): If you're running a test, you can call the `TestWidgetsFlutterBinding.ensureInitialized()` as the first line in your test's `main()` method to initialize the binding. E/flutter (21352): #0 defaultBinaryMessenger.<anonymous closure> (package:flutter/src/services/binary_messenger.dart:97:7) E/flutter (21352): #1 defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:110:4) E/flutter (21352): #2 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:142:62) E/flutter (21352): #3 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:148:36) E/flutter (21352): #4 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:331:12) E/flutter (21352): #5 MethodChannel.invokeListMethod (package:flutter/src/services/platform_channel.dart:344:41) E/flutter (21352): #6 MethodChannelFirebase._initializeCore (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:30:37) E/flutter (21352): #7 MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:77:13) E/flutter (21352): #8 Firebase.initializeApp (package:firebase_core/src/firebase.dart:41:47) E/flutter (21352): #9 main (package:taskii/main.dart:11:18) E/flutter (21352): #10 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:140:25) E/flutter (21352): #11 _rootRun (dart:async/zone.dart:1354:13) E/flutter (21352): #12 _CustomZone.run (dart:async/zone.dart:1258:19) E/flutter (21352): #13 _runZoned (dart:async/zone.dart:1788:10) E/flutter (21352): #14 runZonedGuarded (dart:async/zone.dart:1776:12) E/flutter (21352): #15 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:133:5) E/flutter (21352): #16 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:283:19) E/flutter (21352): #17 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12) E/flutter (21352):
-
Very Useless about 3 yearsThanks, it works and I now understand why.
-
chandru over 2 yearsWhat is WidgetsFlutterBinding.ensureInitialized(); actually mean??