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
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: '', displayName: ''),
|
|
);
|
|
|
|
emit(state.copyWith(locale: findLanguage.locale));
|
|
}
|
|
|
|
FutureOr<void> _changeLocaleEvent(ChangeLocaleEvent event,
|
|
Emitter<AppState> emit) {
|
|
emit(state.copyWith(locale: event.locale));
|
|
}
|
|
}
|