added amoled dark mode
This commit is contained in:
parent
b214c13827
commit
caff01130b
|
@ -37,7 +37,10 @@ class MyApp extends StatelessWidget {
|
|||
builder: (ctx) => MaterialApp(
|
||||
title: 'Flutter Demo',
|
||||
themeMode: ctx.watch<ConfigStore>().theme,
|
||||
darkTheme: ThemeData.dark(),
|
||||
darkTheme: ThemeData.dark().copyWith(
|
||||
scaffoldBackgroundColor: ctx.watch<ConfigStore>().amoledDarkMode
|
||||
? Colors.black
|
||||
: null),
|
||||
theme: ThemeData(
|
||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||
),
|
||||
|
|
|
@ -70,6 +70,12 @@ class _AppearanceConfig extends StatelessWidget {
|
|||
ctx.read<ConfigStore>().theme = selected;
|
||||
},
|
||||
),
|
||||
SwitchListTile(
|
||||
title: Text('Amoled dark mode'),
|
||||
value: ctx.watch<ConfigStore>().amoledDarkMode,
|
||||
onChanged: (checked) {
|
||||
ctx.read<ConfigStore>().amoledDarkMode = checked;
|
||||
})
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
@ -12,7 +12,7 @@ abstract class _ConfigStore with Store {
|
|||
|
||||
_ConfigStore() {
|
||||
// persitently save settings each time they are changed
|
||||
_saveReactionDisposer = reaction((_) => [theme], (_) {
|
||||
_saveReactionDisposer = reaction((_) => [theme, amoledDarkMode], (_) {
|
||||
save();
|
||||
});
|
||||
}
|
||||
|
@ -25,18 +25,21 @@ abstract class _ConfigStore with Store {
|
|||
var prefs = await SharedPreferences.getInstance();
|
||||
// load saved settings or create defaults
|
||||
theme = _themeModeFromString(prefs.getString('theme') ?? 'system');
|
||||
amoledDarkMode = prefs.getBool('amoledDarkMode') ?? false;
|
||||
}
|
||||
|
||||
void save() async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
|
||||
await prefs.setString('theme', describeEnum(theme));
|
||||
await prefs.setBool('amoledDarkMode', amoledDarkMode);
|
||||
}
|
||||
|
||||
@observable
|
||||
ThemeMode theme;
|
||||
|
||||
// TODO: add amoledDarkMode switch
|
||||
@observable
|
||||
bool amoledDarkMode;
|
||||
}
|
||||
|
||||
ThemeMode _themeModeFromString(String theme) =>
|
||||
|
|
|
@ -24,10 +24,26 @@ mixin _$ConfigStore on _ConfigStore, Store {
|
|||
});
|
||||
}
|
||||
|
||||
final _$amoledDarkModeAtom = Atom(name: '_ConfigStore.amoledDarkMode');
|
||||
|
||||
@override
|
||||
bool get amoledDarkMode {
|
||||
_$amoledDarkModeAtom.reportRead();
|
||||
return super.amoledDarkMode;
|
||||
}
|
||||
|
||||
@override
|
||||
set amoledDarkMode(bool value) {
|
||||
_$amoledDarkModeAtom.reportWrite(value, super.amoledDarkMode, () {
|
||||
super.amoledDarkMode = value;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '''
|
||||
theme: ${theme}
|
||||
theme: ${theme},
|
||||
amoledDarkMode: ${amoledDarkMode}
|
||||
''';
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue