import 'package:flutter/cupertino.dart'; import 'package:shared_preferences/shared_preferences.dart'; class AppLanguage extends ChangeNotifier { 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(); if (prefs.getString('language_code') == null) { _appLocale = Locale('en'); } else { _appLocale = Locale(prefs.getString('language_code')); } print(" ---- Fetched lang: " + _appLocale.toString()); } getLocale(SharedPreferences prefs) { if (prefs.getString('language_code') == null) { _appLocale = Locale('en'); } _appLocale = Locale(prefs.getString('language_code')); } 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()); notifyListeners(); } }