【发布时间】:2021-03-11 16:57:33
【问题描述】:
在使用 GetX 的实用程序功能时,有什么方法可以存储用户偏好(并在重新启动时检索它们):
Get.changeTheme(ThemeData().dark)
还有
Get.updateLocale(Locale('en', 'US'));
到目前为止,我只能更改主题和语言,但我还没有在 GetX 中找到一种方法来坚持对任何类型的存储进行任何更改,以便下次重新打开应用程序时加载。有什么我忽略的吗?有什么方法可以挂接到启动过程并检查一些存储的值(例如在SharedPreferences 中)并将它们传递给我在GetMaterialApp 中的locale 和theme 属性?
这是我的代码:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
translations: Messages(),
locale: Get.locale,
theme: Get.theme,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
onPressed: () => {
Get.changeTheme(
Get.isDarkMode ? ThemeData.light() : ThemeData.dark())
},
child: Text('change_theme'.tr)),
TextButton(
onPressed: () => {
Get.updateLocale(Get.locale == Locale('en', 'US')
? Locale('de', 'DE')
: Locale('en', 'US'))
},
child: Text('change_language'.tr)),
],
));
}
}
class Messages extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'en_US': {
'change_theme': 'Change Theme',
'change_language': 'Change Language',
},
'de_DE': {
'change_theme': 'Farbschema wechseln',
'change_language': 'Sprache wechseln',
}
};
}
【问题讨论】:
标签: flutter flutter-getx