LocaleNotifier

mail@pastecode.io avatarunknown
dart
a month ago
3.8 kB
0
Indexable
Never
import 'package:base_architecture/data_layer/models/locale_model.dart';
import 'package:base_architecture/data_layer/models/radio_model.dart';
import 'package:base_architecture/presentation/pages/main/main_page.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

class LocaleNotifier extends ChangeNotifier {
  int? localindex;
  setLocalindex(int? newvalue) {
    localindex = newvalue;
    notifyListeners();
  }

  var _index = 0;
  bool isArabic =
      navigatorKey.currentContext!.locale.toString() == 'ar' ? true : false;
  bool isEnglish =
      navigatorKey.currentContext!.locale.toString() == 'en' ? true : false;
  bool isHebrew =
      navigatorKey.currentContext!.locale.toString() == 'he' ? true : false;

  setToArabic() {
    print('ar');
    isArabic = true;
    isEnglish = false;
    isHebrew = false;
    notifyListeners();
  }

  setToEnglish() {
    print('en');
    isEnglish = true;
    isArabic = false;
    isHebrew = false;
    notifyListeners();
  }

  setToHebrew() {
    print('he');
    isHebrew = true;
    isArabic = false;
    isEnglish = false;
    notifyListeners();
  }

  saveAllLanguage() {
    if (isArabic) {
      navigatorKey.currentContext!.setLocale(
        const Locale('ar'),
      );
    } else if (isEnglish) {
      navigatorKey.currentContext!.setLocale(
        const Locale('en'),
      );
    } else if (isHebrew) {
      navigatorKey.currentContext!.setLocale(
        const Locale('he'),
      );
    } else {
      navigatorKey.currentContext!.setLocale(
        const Locale('en'),
      );
    }

    notifyListeners();
  }

  final List<LocaleModel> _appLocales = [
    LocaleModel(
      localeName: 'العربية',
      localeValue: 'ar',
    ),
    LocaleModel(
      localeName: 'English',
      localeValue: 'en',
    ),
  ];
  final List<LocaleModel> _allAppLocales = [
    LocaleModel(
      localeName: 'العربية',
      localeValue: 'ar',
    ),
    LocaleModel(
      localeName: 'English',
      localeValue: 'en',
    ),
    LocaleModel(
      localeName: 'עברית',
      localeValue: 'he',
    ),
  ];

  LocaleModel? selectedLocale = LocaleModel(
    localeName: navigatorKey.currentContext!.locale.toString() == 'ar'
        ? 'العربية'
        : navigatorKey.currentContext!.locale.toString() == 'en'
            ? 'English'
            : navigatorKey.currentContext!.locale.toString() == 'he'
                ? 'עברית'
                : 'ss',
    localeValue: navigatorKey.currentContext!.locale == const Locale('ar')
        ? 'ar'
        : navigatorKey.currentContext!.locale == const Locale('en')
            ? 'en'
            : 'he',
  );

  setSelectedLocale(LocaleModel newValue) {
    selectedLocale = newValue;
    notifyListeners();
  }

  List<LocaleModel> get appLocales => _appLocales;
  List<LocaleModel> get allAppLocales => _allAppLocales;

  cancelAllSelectedLanguage() {
    if (navigatorKey.currentContext!.locale == const Locale('ar')) {
      setToArabic();
    } else if (navigatorKey.currentContext!.locale == const Locale('en')) {
      setToEnglish();
    } else if (navigatorKey.currentContext!.locale == const Locale('he')) {
      setToHebrew();
    } else {
      setToEnglish();
    }
    notifyListeners();
  }

  onBoardingSaveLanguage(String locale) {
    if (locale == 'ar') {
      setToArabic();
      navigatorKey.currentContext!.setLocale(
        const Locale('ar'),
      );
    } else if (locale == 'en') {
      setToEnglish();
      navigatorKey.currentContext!.setLocale(
        const Locale('en'),
      );
    } else if (locale == 'he') {
      setToHebrew();
      navigatorKey.currentContext!.setLocale(
        const Locale('he'),
      );
    } else {
      setToEnglish();
    }
    notifyListeners();
  }
}