await EasyLocalization.ensureInitialized() is crashing on android emulator
I'm failing to use easy_localization in my project, it's failing to run the app (stuck in the splash screen), also tried it in a freshly created project and getting the same result.
steps to reproduce
- flutter create
- add
easy_localization: ^3.0.0to pubspec.yaml - add
await EasyLocalization.ensureInitialized();to main function - run on android emulator version S
Logs:
Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
Running Gradle task 'assembleDebug'...
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Debug service listening on ws://127.0.0.1:64640/5psLffX51yQ=/ws
Syncing files to device sdk gphone64 arm64...
E/flutter (16187): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value
E/flutter (16187): #0 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:142:86)
E/flutter (16187): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:148:36)
E/flutter (16187): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:331:12)
E/flutter (16187): #3 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:358:49)
E/flutter (16187): #4 MethodChannelSharedPreferencesStore.getAll (package:shared_preferences_platform_interface/method_channel_shared_preferences.dart:44:25)
E/flutter (16187): #5 SharedPreferences._getSharedPreferencesMap (package:shared_preferences/shared_preferences.dart:187:57)
E/flutter (16187): #6 SharedPreferences.getInstance (package:shared_preferences/shared_preferences.dart:56:19)
E/flutter (16187): #7 EasyLocalizationController.initEasyLocation (package:easy_localization/src/easy_localization_controller.dart:119:50)
E/flutter (16187): #8 EasyLocalization.ensureInitialized (package:easy_localization/src/easy_localization_app.dart:106:34)
E/flutter (16187): #9 main (package:test/main.dart:5:26)
E/flutter (16187): #10 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:142:25)
E/flutter (16187): #11 _rootRun (dart:async/zone.dart:1354:13)
E/flutter (16187): #12 _CustomZone.run (dart:async/zone.dart:1258:19)
E/flutter (16187): #13 _runZoned (dart:async/zone.dart:1789:10)
E/flutter (16187): #14 runZonedGuarded (dart:async/zone.dart:1777:12)
E/flutter (16187): #15 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:138:5)
E/flutter (16187): #16 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:283:19)
E/flutter (16187): #17 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
E/flutter (16187):
flutter doctor:
doctor --verbose
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.2 20G95 darwin-arm, locale en-EG)
• Flutter version 2.2.3 at /Users/mostafaabdelazim/flutter
• Framework revision f4abaa0735 (8 weeks ago), 2021-07-01 12:46:11 -0700
• Engine revision 241c87ad80
• Dart version 2.13.4
environment: macOS Big sur 11.5.2 M1 Android studio Arctic fox Android emulator API S
At me, then crashes, when I build an appbundle and upload to PlayStore and install and run from there.
Same error always crashes my app when trying to run it on my Android phone. Works great in Chrome though - and apparently the error has something to do with the SharedPreferences.
Calling WidgetsFlutterBinding.ensureInitialized(); before anything else as in the new example code solves the issue :)
Still have this problem in 2023, it works fine on windows but crash on Android at this line WidgetsFlutterBinding.ensureInitialized(); I use the exact same code on pub.dev in example
Fixed forcing manually locale variable in shared pref to en or another language
App crash because language is null, in shared pref
`
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString("locale", "en");
await WidgetsFlutterBinding.ensureInitialized();
`