This commit is contained in:
Felipe
2024-03-24 14:54:21 -05:00
parent f37f8c89c2
commit fca6d41ad8
16 changed files with 620 additions and 20 deletions
@@ -0,0 +1,57 @@
import 'dart:developer';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:professional_repository/professional_repository.dart';
import 'package:user_repository/user_repository.dart';
part 'professional_list_event.dart';
part 'professional_list_state.dart';
class ProfessionalListBloc
extends Bloc<ProfessionalListEvent, ProfessionalListState> {
final UserRepository _userRepository;
final FirebaseProfessionalRepository _firebaseProfessionalRepository;
ProfessionalListBloc({
required UserRepository userRepository,
required FirebaseProfessionalRepository firebaseProfessonalRepository,
}) : _userRepository = userRepository,
_firebaseProfessionalRepository = firebaseProfessonalRepository,
super(ProfessionalListInitial()) {
on<ProfessionalListFetch>(_onProfessionalListFetch);
}
void _onProfessionalListFetch(ProfessionalListFetch event, Emitter<ProfessionalListState> emit) async {
emit(ProfessionalListLoading());
final users = await _userRepository.getUsersProfessionalActive();
final professionals = await _firebaseProfessionalRepository.getProfessionalInfo();
final professionalInfoMap = {for (var doc in professionals) doc.id: doc};
final usersMap = users
.map((user) => UserProfessional(
myUser: user,
professionalInfo: professionalInfoMap[user.id]!,
))
.toList();
emit(ProfessionalListSuccess(users: usersMap));
}
}
class UserProfessional {
final MyUser myUser;
final ProfessionalEntity professionalInfo;
UserProfessional({required this.myUser, required this.professionalInfo});
@override
String toString() {
return '''UserProfessional{
myUser: $myUser,
professionalInfo: $professionalInfo
}''';
}
}
@@ -0,0 +1,15 @@
part of 'professional_list_bloc.dart';
abstract class ProfessionalListEvent extends Equatable {
const ProfessionalListEvent();
@override
List<Object> get props => [];
}
class ProfessionalListFetch extends ProfessionalListEvent {
const ProfessionalListFetch();
@override
List<Object> get props => [];
}
@@ -0,0 +1,21 @@
part of 'professional_list_bloc.dart';
abstract class ProfessionalListState extends Equatable {
const ProfessionalListState();
@override
List<Object> get props => [];
}
class ProfessionalListInitial extends ProfessionalListState {}
class ProfessionalListLoading extends ProfessionalListState {}
class ProfessionalListSuccess extends ProfessionalListState {
final List<UserProfessional> users;
const ProfessionalListSuccess({required this.users});
@override
List<Object> get props => [users];
}
+3
View File
@@ -10,6 +10,9 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
ProfileBloc({required UserRepository userRepository,}) : _userRepository = userRepository,
super(UpdateUserInfoInitial()) {
on<UpdateUserInfo>(_onUpdateUserInfo);
}