global_theme_provider.dart 802 B

1234567891011121314151617181920212223242526272829303132
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import '../util/shared_prefs_instance_util.dart';
  4. /// @author: bo.zeng
  5. /// @email: cnhbwds@gmail.com
  6. /// @date: 2025 2025/4/9 16:00
  7. /// @description:
  8. class GlobalThemeNotifier extends Notifier<ThemeMode> {
  9. @override
  10. ThemeMode build() {
  11. _loadTheme();
  12. return ThemeMode.light; // 初始值
  13. }
  14. void _loadTheme() async {
  15. final isDark = await getIsDark() ?? false;
  16. state = isDark ? ThemeMode.dark : ThemeMode.light;
  17. }
  18. /// 切换白天/黑夜模式
  19. void toggleTheme(bool isDark) async {
  20. state = isDark ? ThemeMode.dark : ThemeMode.light;
  21. await saveIsDark(isDark);
  22. }
  23. // App 跟随系统主题自动切换
  24. void setSystemTheme() {
  25. state = ThemeMode.system;
  26. }
  27. }