首先,我創建了GetxController類
。 final languageController = GetStorage();
var myLocal = [];
void saveLocale(List list) {
languageController.write('servedLocale', list)。
}
@override; }
void onInit() {
List<dynamic>? savedLocale = languageController.read('servedLocale')。
if (s savedLocale != null) {
myLocal = savedLocale;
}
super.onInit()。
}
然后我在main.dart中初始化了GetStorage
final myLocal = LanguageController() .myLocal;
void main() async {
print(myLocal)。
await GetStorage.init()。
runApp(MyApp())。
}
class MyApp extends StatelessWidget{
Widget build(BuildContext context) {
return GetMaterialApp(
翻譯。LocaleString(),
locale: myLocal.isNotEmpty
? Locale(myLocal[0], myLocal[1] )
: Locale('en', 'US') 。
debugShowCheckedModeBanner。false。
home: HomeScreen()。
);
}
然后在設定完locale后的對話框中,我把它寫進了存盤空間
Future<dynamic> myMaterialDialog(BuildContext context) {
final LanguageController languageController = Get.find();
return showDialog(
語境:語境。
builder: (context) {
return AlertDialog(
標題。Text(chooseLanguage.tr),
內容。列(
mainAxisSize: MainAxisSize.min,
兒童。[
TextButton(
onPressed: () {
Get.back();
Get.updateLocale(Locale('en', 'US')。
languageController.saveLocale(['en', 'US'])。)
},
孩子。Text(englishLanguage.tr),
),
TextButton(
onPressed: () {
Get.back();
Get.updateLocale(Locale('ru', 'RU'))。
languageController.saveLocale(['ru', 'RU'])。)
},
孩子。Text(russianLanguage.tr)。
),
],
),
);
});
}
但這并不奏效,每次我重新啟動我的應用程式時,都會顯示1我的Locale為空
。為了檢查saveLocale()方法是否作業,我創建了printSavedLocale()方法
。 void printSavedLocale() {
print(languageController.read('servedLocale'))。
}
在saveLocale()之后把它放到對話框中,它列印了我保存的locale,但重新啟動后保存的locale是空的
。uj5u.com熱心網友回復:
使用這個靜態方法。把它們放在你的專案中的任何地方:
void setData(String key, dynamic value) => GetStorage().write(key, value);
int? getInt(String key) => GetStorage().read(key)。
String? getString(String key) => GetStorage().read(key)。
bool? getBool(String key) => GetStorage().read(key)。
double? getDouble(String key) => GetStorage().read(key)。
dynamic getData(String key) => GetStorage().read(key)。
void clearData() async => GetStorage().erase()。
uj5u.com熱心網友回復:
我可以通過直接從main.dart中讀取存盤空間來解決這個問題
final LanguageController languageController = Get.put(LanguageController() ) 。
final myLocal = LanguageController().readSavedLocale()。
void main() async {
await GetStorage.init()。
runApp(MyApp())。
}
class MyApp extends StatelessWidget{
Widget build(BuildContext context) {
return GetMaterialApp(
翻譯。LocaleString(),
locale: myLocal.isNotEmpty
? Locale(myLocal[0], myLocal[1] )
: Locale('en', 'US') 。
debugShowCheckedModeBanner。false。
home: HomeScreen()。
);
}
而readSavedLocale()方法是
。List readSavedLocale() {
var savedLocale = languageController.read('servedLocale')。
return savedLocale;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332608.html
標籤:
上一篇:翩翩起舞主題未應用于新螢屏
