重新啟動我的應用程式后,我獲得了默認語言,但我想獲得更新的語言
`
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();
`
uj5u.com熱心網友回復:
您可以使用共享首選項來存盤區域設定,然后在需要時從共享首選項中檢索存盤的區域設定值。
uj5u.com熱心網友回復:
當用戶選擇一種語言時,在 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();
初始化 gettorage 后,您可以使用以下代碼保存您的語言環境:
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() 是否為空。如果它不為空,您可以使用以下代碼相應地更新您的語言環境:
if(getLang() != null) {
Locale locale = Locale(getLang()!);
Get.updateLocale(locale);
}
uj5u.com熱心網友回復:
使用共享首選項: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)(不是異步的)。如果您的應用是第一次安裝,則在獲取共享偏好時可能會為空,因此需要仔細檢查。
祝你好運。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524561.html
