重新启动应用程序后,我获得了默认语言,但我想获得更新的语言
`
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();
`
您可以使用共享首选项来存储区域设置,然后在需要时从共享首选项中检索存储的区域设置值。
当用户选择语言时,在 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);
}
请访问此链接,希望对您有帮助
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)
(非异步)。如果您的应用程序是第一次安装,那么在获取共享首选项时它可能可为空,因此有必要仔细检查。祝你好运。