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<AppLanguage> getInstance() async {
    return _singleton;
  }

  Locale get appLocal => _appLocale ?? Locale("en");

  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();
  }
}