39 lines
1.0 KiB
Dart
39 lines
1.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
import 'settings_provider.dart';
|
|
|
|
part 'theme_provider.g.dart';
|
|
|
|
/// Theme mode provider from theme_provider
|
|
/// Extracts theme mode from settings for easy access
|
|
@riverpod
|
|
ThemeMode themeModeFromTheme(Ref ref) {
|
|
final settingsAsync = ref.watch(settingsProvider);
|
|
return settingsAsync.when(
|
|
data: (settings) => settings.themeMode,
|
|
loading: () => ThemeMode.system,
|
|
error: (_, __) => ThemeMode.system,
|
|
);
|
|
}
|
|
|
|
/// Provider to check if dark mode is active
|
|
@riverpod
|
|
bool isDarkMode(Ref ref) {
|
|
final mode = ref.watch(themeModeFromThemeProvider);
|
|
return mode == ThemeMode.dark;
|
|
}
|
|
|
|
/// Provider to check if light mode is active
|
|
@riverpod
|
|
bool isLightMode(Ref ref) {
|
|
final mode = ref.watch(themeModeFromThemeProvider);
|
|
return mode == ThemeMode.light;
|
|
}
|
|
|
|
/// Provider to check if system theme is active
|
|
@riverpod
|
|
bool isSystemTheme(Ref ref) {
|
|
final mode = ref.watch(themeModeFromThemeProvider);
|
|
return mode == ThemeMode.system;
|
|
}
|