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 getInstance() async { return _singleton; } Locale get appLocal => _appLocale ?? Locale("en"); Future 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'); langCode = "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()); } }