Link between front-end and back-end
This commit is contained in:
54
lib/providers/local_provider.dart
Normal file
54
lib/providers/local_provider.dart
Normal file
@ -0,0 +1,54 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class LocaleProvider extends ChangeNotifier {
|
||||
Locale? _locale;
|
||||
|
||||
Locale? get locale => _locale;
|
||||
|
||||
|
||||
LocaleProvider() {
|
||||
_loadLocale();
|
||||
}
|
||||
|
||||
|
||||
void _loadLocale() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final languageCode = prefs.getString('languageCode');
|
||||
final countryCode = prefs.getString('countryCode');
|
||||
|
||||
if (languageCode != null) {
|
||||
_locale = Locale(languageCode, countryCode);
|
||||
} else {
|
||||
_locale = null;
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
||||
void setLocale(Locale newLocale) async {
|
||||
if (_locale == newLocale) return;
|
||||
|
||||
_locale = newLocale;
|
||||
notifyListeners();
|
||||
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString('languageCode', newLocale.languageCode);
|
||||
if (newLocale.countryCode != null) {
|
||||
await prefs.setString('countryCode', newLocale.countryCode!);
|
||||
} else {
|
||||
await prefs.remove('countryCode');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void clearLocale() async {
|
||||
_locale = null;
|
||||
notifyListeners();
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.remove('languageCode');
|
||||
await prefs.remove('countryCode');
|
||||
}
|
||||
}
|
||||
28
lib/providers/theme_provider.dart
Normal file
28
lib/providers/theme_provider.dart
Normal file
@ -0,0 +1,28 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class ThemeProvider extends ChangeNotifier {
|
||||
ThemeMode _themeMode = ThemeMode.system;
|
||||
|
||||
ThemeMode get themeMode => _themeMode;
|
||||
|
||||
ThemeProvider() {
|
||||
_loadThemeMode();
|
||||
}
|
||||
|
||||
void _loadThemeMode() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final themeIndex = prefs.getInt('themeMode') ?? 0;
|
||||
_themeMode = ThemeMode.values[themeIndex];
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setThemeMode(ThemeMode mode) async {
|
||||
if (_themeMode != mode) {
|
||||
_themeMode = mode;
|
||||
notifyListeners();
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt('themeMode', mode.index);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user