flutter - 如何将 BloC AppTheme 的 id 放入颤动并防止主题重新启动
问题描述
我正在尝试使用flutter bloc来在我的flutter应用程序中获得动态主题。我已经能够做到,现在我正在尝试使用共享首选项保存主题的状态,为此我遵循其他 stackOverflow 用户的一些指导方针,现在我遇到了一个我不知道的问题不知道怎么解决。
首先,这是我如何能够使用 sharedPreferences 保存/获取我的应用程序主题的状态:
1 - >我将条件置于我的BloC状态以选择主题
@override
ThemeState get initialState => ThemeState(
themeData: appThemeData[
MyApp.mainSharedPreferences.getInt("selectedThemeIndex") ??
AppTheme.GreenLight]);
2-在其他类中,我有我的 SharedPreference 方法
_persistTheme(AppTheme theme) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setInt("selectedThemeIndex", theme.index);
3 - 我的 mainSharedPreferences 已经在我的主类中初始化
class MyApp extends StatefulWidget {
static SharedPreferences mainSharedPreferences;
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
MyApp.mainSharedPreferences = await SharedPreferences.getInstance();
}
//-----
4 - 我有这个用于获取/保存 sharedPreferences 的值
// to save value
MyApp.mainSharedPreferences.setInt("selectedThemeIndex", value);
// to get the saved value
MyApp.mainSharedPreferences.getInt("selectedThemeIndex");
我有 3 个主题,所以你可以在哪里看到“价值”,我根据我按下按钮时想要的主题放置 1、2 或 3
5 - 我的 3 个主题
enum AppTheme {
GreenLight,
GreenDark,
BlueLight,
}
final appThemeData = {
AppTheme.GreenLight: ThemeData(
brightness: Brightness.light,
primaryColor: Colors.teal,
),
AppTheme.GreenDark: ThemeData(
brightness: Brightness.light,
primaryColor: Colors.orange,
),
AppTheme.GreenDark: ThemeData(
brightness: Brightness.light,
primaryColor: Colors.BlueLight,
),
};
所以,我的问题是;我如何为我的主题添加一个 ID,以便使用我的 sharedPreference 方法选择它们。如果不可能,我如何保存和获取我选择的主题,以防止每次运行应用程序时主题都重新启动。
解决方案
推荐阅读
- c# - 我应该在方法摘要中提及 OperationCanceledException 吗?
- php - 在 Magento 2 中创建自定义 CLI 命令让我出错
- sql - 动态获取sql中变量的所有值的计数
- flutter - Flutter - 如何将 showModalBottomSheet 设置为全高但低于状态栏?
- mongodb - MongoDB shell:使用正则表达式更改现有属性来更新属性
- ios - 获取 API 数据并将结果放入 UITableView 时出现问题
- python - 反正有没有简化 if/elif 块?
- python - 如何用正则表达式匹配数据
- javascript - GraphQL - 自定义字段
- java - 带有嵌套映射器和 unmappedSourcePolicy 的 Mapstruct 错误