You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

34 lines
1.3 KiB

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<AppEvent, AppState> {
AppBloc() : super(const AppState()) {
on<InitLocaleEvent>(_initLocaleEvent);
on<ChangeLocaleEvent>(_changeLocaleEvent);
}
FutureOr<void> _initLocaleEvent(InitLocaleEvent event,
Emitter<AppState> 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: ''),
);
emit(state.copyWith(locale: findLanguage.locale));
}
FutureOr<void> _changeLocaleEvent(ChangeLocaleEvent event,
Emitter<AppState> emit) {
emit(state.copyWith(locale: event.locale));
}
}