【发布时间】:2020-01-21 13:03:02
【问题描述】:
在这里我有一个屏幕,当我按下按钮时,我有一些按钮,它会改变应用程序的颜色,但当我重新启动应用程序时它会重置。我希望它不会重置,直到我从应用程序更改颜色。因此,为此,我想将 THEmedata 存储在共享首选项中,并且我想从共享首选项中获取主题数据,因此每当我重新启动应用程序时,它都需要从共享首选项中获取主题。
这是我尝试过的一些代码,
ThemeBloc.dart
class ThemeBloc extends Bloc<ThemeEvent, ThemeState> {
@override
ThemeState get initialState =>
ThemeState(themeData: appThemeData[AppTheme.GreenLight]);
@override
Stream<ThemeState> mapEventToState(
ThemeEvent event,
) async* {
if (event is ThemeChanged) {
yield ThemeState(themeData: appThemeData[event.theme]);
}
}
}
ThemeEvent.dart
abstract class ThemeEvent extends Equatable {
ThemeEvent([List props = const <dynamic>[]]) : super(props);
}
class ThemeChanged extends ThemeEvent {
final AppTheme theme;
ThemeChanged({
this.theme,
}) : super([theme]);
}
ThemeState.dart
@immutable
class ThemeState extends Equatable {
final ThemeData themeData;
ThemeState({
@required this.themeData,
}) : super([themeData]);
}
AppTheme.dart
enum AppTheme {
GreenLight,
GreenDark,
BlueLight,
BlueGrey,
Amber,
}
final appThemeData = {
AppTheme.GreenLight: ThemeData(
brightness: Brightness.light,
primaryColor: Colors.teal,
),
AppTheme.GreenDark: ThemeData(
brightness: Brightness.light,
primaryColor: Colors.orange,
),
};
【问题讨论】:
-
可以序列化/反序列化为json
标签: flutter dart colors themes sharedpreferences