61 lines
1.6 KiB
Dart
61 lines
1.6 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class AppLanguage{
|
|
static final AppLanguage _singleton = AppLanguage._internal();
|
|
|
|
Locale _appLocale = Locale('en');
|
|
|
|
factory AppLanguage() {
|
|
return _singleton;
|
|
}
|
|
|
|
AppLanguage._internal();
|
|
|
|
static Future<AppLanguage> getInstance() async {
|
|
return _singleton;
|
|
}
|
|
|
|
Locale get appLocal => _appLocale ?? Locale("en");
|
|
|
|
Future<void> fetchLocale() async {
|
|
var prefs = await SharedPreferences.getInstance();
|
|
String langCode = prefs.getString('language_code');
|
|
print(" ---- lang code $langCode");
|
|
if ( langCode == null) {
|
|
_appLocale = Locale('en');
|
|
} else {
|
|
_appLocale = Locale(langCode);
|
|
}
|
|
print(" ---- Fetched lang: " + _appLocale.toString());
|
|
}
|
|
|
|
getLocale(SharedPreferences prefs) {
|
|
String langCode = prefs.getString('language_code');
|
|
if ( langCode == null) {
|
|
_appLocale = Locale('en');
|
|
}
|
|
_appLocale = Locale(langCode);
|
|
print(" ---- Get lang: " + _appLocale.toString() + " lang code $langCode");
|
|
|
|
}
|
|
|
|
|
|
void changeLanguage(Locale type) async {
|
|
var prefs = await SharedPreferences.getInstance();
|
|
if (_appLocale == type) {
|
|
return;
|
|
}
|
|
if (type == Locale("hu")) {
|
|
_appLocale = Locale("hu");
|
|
await prefs.setString('language_code', 'hu');
|
|
await prefs.setString('countryCode', 'HU');
|
|
} else {
|
|
_appLocale = Locale("en");
|
|
await prefs.setString('language_code', 'en');
|
|
await prefs.setString('countryCode', 'US');
|
|
}
|
|
print(" ---- Stored lang: " + _appLocale.toString());
|
|
}
|
|
}
|