Issue
I have used the Get package for localization and it’s working fine. but if I destroy(kill, close) the app and open again so that time by default local language is set.
Example:- Open app-> language(English)-> change language(arabic)->it working -> close(destroy, kill) app-> again open the -> by default set language(English).
above is the flow of the process.
GetMaterialApp(
locale: Get.locale,
translations: LLLanguages(),
navigatorKey:Get.key,
debugShowCheckedModeBanner:false,
theme:LLTheme.light,
darkTheme: LLTheme.dark,
themeMode: ThemeService().theme,
home:LLSplashScreen(),
)
Get.updateLocale(Locale('ar','DZ'));
Thanks in advance
Solution
It’s the expected behavior. You need to save your active localization/language flag in persistent storage like GetStorage, SharedPreferences, or Hive. And you need to get that value and set localization according to that value on app start.
main() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
var isArabic= prefs.getBool('isArabic') ?? false;
runApp(MyApp(isArabic));
}
class MyApp extends StatelessWidget{
final bool isArabic;
MyApp(this.isArabic);
Widget build()=> GetMaterialApp(
locale: isArabic?Locale('ar','DZ'): Locale('en','US'),
translations: LLLanguages(),
navigatorKey:Get.key,
debugShowCheckedModeBanner:false,
theme:LLTheme.light,
darkTheme: LLTheme.dark,
themeMode: ThemeService().theme,
home:LLSplashScreen(),
);
}
Answered By – S. M. JAHANGIR
Answer Checked By – Cary Denson (FlutterFixes Admin)