changeThemeMode method
Change your current ThemeMode
If you do not send any parameter it will toggle in the following order:
dynamic -> light -> dark -> dynamic ->
Or you can define boolean values for the parameters "dynamic
" and/or "dark
"
If the value of "dynamic
" is true, it takes precedence over "dark
"
Implementation
void changeThemeMode({bool? dynamic, bool? dark}) {
if (dynamic == null && dark == null) {
_toggleTheme();
return;
}
ThemeMode? newThemeMode;
bool forceDark = _prefs.isDark() ?? false;
if (dark != null || dynamic != null) {
forceDark = dark ?? forceDark;
newThemeMode = (dynamic ?? false)
? ThemeMode.system
: forceDark
? ThemeMode.dark
: ThemeMode.light;
}
if (newThemeMode == ThemeMode.system) {
_prefs.clearPref(SharePrefsAttribute.isDark);
} else {
_prefs.setIsDark(forceDark);
}
setState(() {
themeMode = newThemeMode;
});
}