-
Notifications
You must be signed in to change notification settings - Fork 9
/
theme_model.dart
34 lines (28 loc) · 1.02 KB
/
theme_model.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:fst_app_flutter/models/preferences/theme_preference.dart';
// TODO: document ThemeModel @richtwin567
class ThemeModel with ChangeNotifier {
static ThemePreference _themePreference = ThemePreference();
//set to system theme by default
ThemeMode _currentTheme;
init() async {
_currentTheme = await _themePreference.mode;
}
ThemeMode get selectedTheme => _currentTheme;
switchThemeTo(ThemeMode themeMode) {
_currentTheme = themeMode;
_themePreference.setThemeMode(themeMode);
notifyListeners();
}
bool get isDark =>
(selectedTheme == ThemeMode.dark) ||
(selectedTheme == ThemeMode.system &&
SchedulerBinding.instance.window.platformBrightness ==
Brightness.dark);
bool get isLight =>
(selectedTheme == ThemeMode.light) ||
(selectedTheme == ThemeMode.system &&
SchedulerBinding.instance.window.platformBrightness ==
Brightness.light);
}