quickgui/lib/src/model/app_settings.dart

49 lines
1.3 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:quickgui/src/supported_locales.dart';
class AppSettings extends ChangeNotifier {
ThemeMode _themeMode = ThemeMode.light;
String? _activeLocale;
ThemeMode get themeMode => _themeMode;
String get activeLocale => _activeLocale ?? Platform.localeName;
String? get languageCode => _activeLocale?.split("_")[0];
String? get countryCode =>
((_activeLocale != null) && (_activeLocale!.contains("_")))
? _activeLocale!.split("_")[1]
: null;
set activeLocale(String locale) {
_activeLocale = locale;
notifyListeners();
}
setActiveLocaleSilently(String locale) {
_activeLocale = locale;
if (_activeLocale!.contains(".")) {
_activeLocale = _activeLocale!.split(".")[0];
}
if (!supportedLocales.contains(_activeLocale)) {
if (activeLocale.contains("_")) {
_activeLocale = _activeLocale!.split("_")[0];
}
if (!supportedLocales.contains(_activeLocale)) {
_activeLocale = "en";
}
}
}
set useDarkModeSilently(bool useDarkMode) {
_themeMode = useDarkMode ? ThemeMode.dark : ThemeMode.light;
}
set useDarkMode(bool useDarkMode) {
useDarkModeSilently = useDarkMode;
notifyListeners();
}
}