workouttest_util/lib/util/app_language.dart
2023-01-28 12:53:16 +01:00

69 lines
1.9 KiB
Dart

import 'dart:io';
import 'package:workouttest_util/util/logging.dart';
import 'package:flutter/cupertino.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AppLanguage with Logging {
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');
log(" ---- lang code $langCode");
if (langCode == null) {
_appLocale = Locale('en');
} else {
_appLocale = Locale(langCode);
}
log(" ---- Fetched lang: " + _appLocale.toString());
}
getLocale(SharedPreferences prefs) {
String? langCode = prefs.getString('language_code');
if (langCode == null) {
final String localName = Platform.localeName;
if (localName.endsWith("HU")) {
_appLocale = Locale('hu');
langCode = "hu";
} else {
_appLocale = Locale('en');
langCode = "en";
}
}
_appLocale = Locale(langCode);
log(" ---- 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');
}
log(" ---- Stored lang: " + _appLocale.toString());
}
}