feat: implement AI export service and establish project navigation and theming infrastructure + acces internet
Build & Release Android APK / build-apk (push) Successful in 23m34s
Build & Release Android APK / build-apk (push) Successful in 23m34s
This commit is contained in:
@@ -1,36 +1,59 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'app_theme.dart';
|
||||
|
||||
class ThemeProvider with ChangeNotifier {
|
||||
static const String _themeModeKey = 'user_theme_mode';
|
||||
|
||||
static const String _accentKey = 'user_accent_color';
|
||||
|
||||
ThemeMode _themeMode = ThemeMode.system;
|
||||
AppAccentColor _accent = AppAccentColor.blue;
|
||||
|
||||
ThemeMode get themeMode => _themeMode;
|
||||
AppAccentColor get currentAccent => _accent;
|
||||
Color get primaryColor => _accent.color;
|
||||
|
||||
ThemeData get lightTheme => AppTheme.buildLightTheme(_accent);
|
||||
ThemeData get darkTheme => AppTheme.buildDarkTheme(_accent);
|
||||
|
||||
ThemeProvider() {
|
||||
loadThemeMode();
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
Future<void> loadThemeMode() async {
|
||||
Future<void> loadSettings() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final modeIndex = prefs.getInt(_themeModeKey);
|
||||
final accentId = prefs.getString(_accentKey);
|
||||
|
||||
if (modeIndex != null) {
|
||||
_themeMode = ThemeMode.values[modeIndex];
|
||||
notifyListeners();
|
||||
}
|
||||
if (accentId != null) {
|
||||
_accent = AppAccentColor.fromId(accentId);
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> setThemeMode(ThemeMode mode) async {
|
||||
if (_themeMode == mode) return;
|
||||
|
||||
|
||||
_themeMode = mode;
|
||||
notifyListeners();
|
||||
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt(_themeModeKey, mode.index);
|
||||
}
|
||||
|
||||
Future<void> setAccent(AppAccentColor accent) async {
|
||||
if (_accent.id == accent.id) return;
|
||||
|
||||
_accent = accent;
|
||||
notifyListeners();
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString(_accentKey, accent.id);
|
||||
}
|
||||
|
||||
String get themeModeName {
|
||||
switch (_themeMode) {
|
||||
case ThemeMode.system:
|
||||
|
||||
Reference in New Issue
Block a user