import 'dart:async'; import 'dart:ui'; import 'package:bloc/bloc.dart'; import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; import 'package:hadi_hoda_flutter/core/utils/local_storage.dart'; import 'package:hadi_hoda_flutter/features/app/presentation/bloc/app_event.dart'; import 'package:hadi_hoda_flutter/features/app/presentation/bloc/app_state.dart'; import 'package:hadi_hoda_flutter/features/language/domain/entity/language_entity.dart'; class AppBloc extends Bloc { AppBloc() : super(const AppState()) { on(_initLocaleEvent); on(_changeLocaleEvent); } FutureOr _initLocaleEvent(InitLocaleEvent event, Emitter emit) { final String selectLanguage = LocalStorage.readData(key: MyConstants.selectLanguage) ?? MyConstants.defaultLanguage; // Try to find in constants first, or create a temporary one to get locale final LanguageEntity findLanguage = MyConstants.languages.firstWhere( (e) => e.code == selectLanguage, orElse: () => LanguageEntity(code: selectLanguage, title: '', displayName: ''), ); emit(state.copyWith(locale: findLanguage.locale)); } FutureOr _changeLocaleEvent(ChangeLocaleEvent event, Emitter emit) { emit(state.copyWith(locale: event.locale)); } }