Settings, correção de light/darkmode do dispositivo (e adição da escolha entre modos nas settings) e correção do tipo de letra no textfield do chatbot

This commit is contained in:
2026-05-11 21:47:15 +01:00
parent 9faab9b74e
commit b7988eb608
13 changed files with 1342 additions and 59 deletions

View File

@@ -0,0 +1,85 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../services/theme_service.dart';
/// Provider for theme management
final themeProvider = StateNotifierProvider<ThemeNotifier, ThemeMode>((ref) {
return ThemeNotifier();
});
/// Notifier for managing theme state
class ThemeNotifier extends StateNotifier<ThemeMode> {
ThemeNotifier() : super(ThemeMode.light) {
_initializeTheme();
}
/// Initialize theme from storage
Future<void> _initializeTheme() async {
try {
final storedTheme = await ThemeService.getThemeMode();
state = storedTheme;
} catch (e) {
state = ThemeMode.light;
}
}
/// Change theme mode
Future<void> setThemeMode(ThemeMode themeMode) async {
// For now, only allow light mode
// Future: Allow dark mode when available
if (themeMode == ThemeMode.light || ThemeService.isDarkModeAvailable()) {
state = themeMode;
await ThemeService.setThemeMode(themeMode);
}
}
/// Toggle between light and dark mode (for future use)
Future<void> toggleTheme() async {
if (ThemeService.isDarkModeAvailable()) {
final newTheme = state == ThemeMode.light
? ThemeMode.dark
: ThemeMode.light;
await setThemeMode(newTheme);
}
}
/// Reset to default theme
Future<void> resetTheme() async {
await setThemeMode(ThemeMode.light);
}
/// Check if current theme is dark
bool isDarkMode() {
return state == ThemeMode.dark;
}
/// Check if current theme is light
bool isLightMode() {
return state == ThemeMode.light;
}
/// Get current theme as string
String get currentThemeString {
return ThemeService.getThemeModeString(state);
}
/// Initialize theme from storage (for future use)
Future<void> initializeTheme() async {
final storedTheme = await ThemeService.getStoredThemeMode();
// Only set if dark mode is available or if it's light mode
if (storedTheme == ThemeMode.light || ThemeService.isDarkModeAvailable()) {
state = storedTheme;
}
}
}
/// Provider for checking if dark mode is available
final isDarkModeAvailableProvider = Provider<bool>((ref) {
return ThemeService.isDarkModeAvailable();
});
/// Provider for current theme string
final themeStringProvider = Provider<String>((ref) {
final theme = ref.watch(themeProvider);
return ThemeService.getThemeModeString(theme);
});