新增夜间模式相关代码
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class ThemeService {
|
||||
static const _prefKey = 'theme_mode';
|
||||
static final ValueNotifier<ThemeMode> notifier = ValueNotifier(
|
||||
ThemeMode.system,
|
||||
);
|
||||
|
||||
/// 启动时调用(main.dart)
|
||||
static Future<void> init() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final saved = prefs.getString(_prefKey);
|
||||
notifier.value = _parse(saved);
|
||||
}
|
||||
|
||||
/// 菜单里调用
|
||||
static Future<void> setMode(ThemeMode mode) async {
|
||||
notifier.value = mode;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString(_prefKey, _name(mode));
|
||||
}
|
||||
|
||||
static ThemeMode _parse(String? s) {
|
||||
switch (s) {
|
||||
case 'light':
|
||||
return ThemeMode.light;
|
||||
case 'dark':
|
||||
return ThemeMode.dark;
|
||||
default:
|
||||
return ThemeMode.system;
|
||||
}
|
||||
}
|
||||
|
||||
static String _name(ThemeMode m) {
|
||||
switch (m) {
|
||||
case ThemeMode.light:
|
||||
return 'light';
|
||||
case ThemeMode.dark:
|
||||
return 'dark';
|
||||
case ThemeMode.system:
|
||||
return 'system';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user