appTheme.dart 729 B

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