You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
760 B
29 lines
760 B
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get_storage/get_storage.dart';
|
|
|
|
class ThemeService {
|
|
final _box = GetStorage();
|
|
final _key = 'isDarkMode';
|
|
|
|
/// 获取主题模式 - 如果没有保存过,则默认为系统主题
|
|
ThemeMode getThemeMode() {
|
|
return isSavedDarkMode() ? ThemeMode.dark : ThemeMode.light;
|
|
}
|
|
|
|
/// 是否是暗黑模式
|
|
bool isSavedDarkMode() {
|
|
return _box.read(_key) ?? false;
|
|
}
|
|
|
|
/// 保存主题模式到本地存储
|
|
void saveThemeMode(bool isDarkMode) {
|
|
_box.write(_key, isDarkMode);
|
|
}
|
|
|
|
/// 切换主题
|
|
void changeThemeMode() {
|
|
Get.changeThemeMode(isSavedDarkMode() ? ThemeMode.light : ThemeMode.dark);
|
|
saveThemeMode(!isSavedDarkMode());
|
|
}
|
|
}
|