mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 17:40:45 +00:00
* feat(app): Добавить пример со Scope * fix scope * feat: добавить скоуп с внутренней зависимостью от репозитория (#6) Co-authored-by: Artem Barkalov <artembark@gmail.com> * feat: исправить обалсть видимости ProfileScope * feat: добавить фикс namespace плагинов --------- Co-authored-by: PetrovY <y.petrov@friflex.com> Co-authored-by: Artem Barkalov <artembark@gmail.com>
40 lines
1.2 KiB
Dart
40 lines
1.2 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:friflex_starter/features/profile/domain/repository/i_profile_repository.dart';
|
|
|
|
part 'profile_event.dart';
|
|
part 'profile_state.dart';
|
|
|
|
class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
|
|
ProfileBloc(this._profileRepository) : super(ProfileInitialState()) {
|
|
// Вам необходимо добавлять только
|
|
// один обработчик событий в конструкторе
|
|
on<ProfileEvent>((event, emit) async {
|
|
if (event is ProfileFetchProfileEvent) {
|
|
await _fetchProfile(event, emit);
|
|
}
|
|
});
|
|
}
|
|
|
|
final IProfileRepository _profileRepository;
|
|
|
|
Future<void> _fetchProfile(
|
|
ProfileFetchProfileEvent event,
|
|
Emitter<ProfileState> emit,
|
|
) async {
|
|
try {
|
|
emit(ProfileWaitingState());
|
|
final data = await _profileRepository.fetchUserProfile(event.id);
|
|
emit(ProfileSuccessState(data: data));
|
|
} on Object catch (error, stackTrace) {
|
|
emit(
|
|
ProfileErrorState(
|
|
message: 'Ошибка при загрузке профиля',
|
|
error: error,
|
|
stackTrace: stackTrace,
|
|
),
|
|
);
|
|
}
|
|
}
|
|
}
|