appTheme.dart 768 B

12345678910111213141516171819202122232425262728
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import 'package:flutter_riverpod/legacy.dart';
  4. class AppTheme {
  5. static final appThemeProvider = StateProvider<ThemeMode?>((ref) {
  6. return ThemeMode.system;
  7. });
  8. static late WidgetRef? _appWidgetRef;
  9. static StateController<ThemeMode?>? _appThemeNotifier;
  10. static setRootWidgetRef(WidgetRef ref) {
  11. _appWidgetRef = ref;
  12. _appThemeNotifier = ref.watch(appThemeProvider.notifier);
  13. }
  14. static ThemeMode? getTheme([WidgetRef? ref]) {
  15. if (ref != null) {
  16. return ref.watch(appThemeProvider);
  17. } else {
  18. return _appWidgetRef!.watch(appThemeProvider);
  19. }
  20. }
  21. static setTheme(ThemeMode mode) {
  22. _appThemeNotifier?.state = mode;
  23. }
  24. }