如何在重新启动应用程序后保存我的语言环境

问题描述 投票:0回答:4

重新启动应用程序后,我获得了默认语言,但我想获得更新的语言

`

void main() {
  runApp(const MyApp());
}
class MyApp extends StatelessWidget {


  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    
    return GetMaterialApp(
      translations:  LocalString(),
      locale: const Locale('en', 'US'),
      debugShowCheckedModeBanner: false,
      ),
      home:  homeScreen();

`

flutter dart flutter-dependencies flutter-animation flutter-test
4个回答
1
投票

您可以使用共享首选项来存储区域设置,然后在需要时从共享首选项中检索存储的区域设置值。


0
投票

当用户选择语言时,在 GetX 中您可以使用以下函数更新区域设置:

void changeLang(String lang) {
    Locale locale = Locale(lang);
    Get.updateLocale(locale);
  }

您可以通过以下方式使用上述功能:

changeLang('en')

changeLang('bn')

因此,用户更改语言后,您可以将其存储在 GetStorage(https://pub.dev/packages/get_storage) 中并稍后检索。

导入GetStorage包后。在 runApp(const MyApp()); 之前添加以下行

await GetStorage.init();
初始化 getstorage 后,您可以使用以下代码保存您的语言环境:

Future<bool> saveLanguage(String? lang) async { final box = GetStorage(); await box.write('lang', lang); return true; }
要检索保存的语言,您可以使用以下代码:

String? getLang() { final box = GetStorage(); return box.read('lang'); }
因此,当用户重新运行应用程序时,检查 getLang() 是否为 null。如果它不为空,您可以使用以下代码相应地更新您的语言环境:

if(getLang() != null) { Locale locale = Locale(getLang()!); Get.updateLocale(locale); }
    

0
投票

-1
投票
使用共享首选项:

https://pub.dev/packages/shared_preferences

根据我的经验,使用单例。示例:

class PrefsInstance { static PrefsInstance _instance = new PrefsInstance.internal(); PrefsInstance.internal(); factory PrefsInstance() => _instance; Future<void> saveAccessToken(String token) async { SharedPreferences prefs = await SharedPreferences.getInstance(); print("saveAccessToken"); await prefs.setBool(GeneralPrefsConstant.PREF_KEY_LOGIN, true); await prefs.setString(GeneralPrefsConstant.PREF_KEY_ACCESS_TOKEN, token); DataInstance().isLogin = true; DataInstance().accessToken = token; } Future<void> logOut() async { SharedPreferences prefs = await SharedPreferences.getInstance(); print("LOG OUT -> FIX SHARED PREFERENCES"); await prefs.setBool(GeneralPrefsConstant.PREF_KEY_LOGIN, false); await prefs.setString(GeneralPrefsConstant.PREF_KEY_ACCESS_TOKEN, ""); await prefs.setString(GeneralPrefsConstant.PREF_KEY_PROFILE, ""); DataInstance().isLogin = false; DataInstance().accessToken = ""; } saveLanguage() async {...} }
共享的偏好变量将保存到您手机的内存中,并且不会在您关闭应用程序时消失。每个变量都有特定的键 (

GeneralPrefsConstant

)。它非常容易使用。如果要保存,请使用异步方法
setString(key, value)
。如果你想获取,请使用 
getString(key)
 (非异步)。如果您的应用程序是第一次安装,那么在获取共享首选项时它可能可为空,因此有必要仔细检查。

祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.