Здесь у меня есть один экран, на котором есть какая-то кнопка, когда я нажимаю кнопку, она меняет цвет приложения, но сбрасывается при перезапуске приложения. Я хочу, чтобы он не сбрасывался, пока я не изменил цвет из приложения. поэтому для этого я хочу хранить THemedata в общих настройках и получать данные темы из общих настроек, поэтому при каждом перезапуске приложения необходимо выбрать тему из общих настроек.
Вот код, который я ' пробовал,
ThemeBlo c .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,
),
};