runable
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user