This commit is contained in:
Felipe
2024-03-18 17:46:03 -05:00
parent b7b66c389f
commit bb840260ba
15 changed files with 259 additions and 30 deletions
@@ -20,11 +20,19 @@ class ProfessionalBloc extends Bloc<ProfessionalEvent, ProfessionalState> {
_userRepository = userRepository,
super(ProfessionalInitial()) {
bool isProModeActive = _professionalRepository.isProModeActive;
emit(LoadedModeProState(isProModeActive));
final proInfo = _professionalRepository.lastProInfo();
emit(LoadedModeProState(isProModeActive, proInfo));
_professionalRepository.streamProInfo().listen((proInfo) {
if (proInfo == null) {
emit(const ProfessionalStateFailure());
} else {
final isProModeActive = _professionalRepository.isProModeActive;
emit(LoadedModeProState(isProModeActive, proInfo));
}
});
_professionalRepository.sreamIsProModeActive().listen((isProModeActive) {
log('xdd despues de escuchar');
add(UpdateProfessionalEvent(isProModeActive: isProModeActive));
});
@@ -33,7 +41,8 @@ class ProfessionalBloc extends Bloc<ProfessionalEvent, ProfessionalState> {
});
on<UpdateProfessionalEvent>((event, emit) async {
emit(LoadedModeProState(event.isProModeActive));
final proInfo = _professionalRepository.lastProInfo();
emit(LoadedModeProState(event.isProModeActive, proInfo));
});
on<SendProfessionalToReviewEvent>((event, emit) async {
@@ -60,6 +69,7 @@ class ProfessionalBloc extends Bloc<ProfessionalEvent, ProfessionalState> {
identification: event.identification,
identificationPicture: identificationPdfUrl,
address: '',
aditionalAddress: '',
profession: event.profession,
specializations: event.specializations,
specializationsPictures: specializationsPdfUrls,
@@ -67,15 +77,15 @@ class ProfessionalBloc extends Bloc<ProfessionalEvent, ProfessionalState> {
latitude: '',
longitude: '',
rate: '',
location: '',
locationPreferences: LocationPreferences.office,
bannerPicture: '',
schedules: Schedules.empty,
paymentMethods: PaymentMethodEntity.empty,
));
} catch (e) {
log('error acceso a pro ${e.toString()}');
}
// _userRepository
// .updateUserInfo(myUser.copyWith(proState: ProState.pending));
// _userRepository.updateUserInfo(myUser.copyWith(proState: ProState.pending));
});
}
}
@@ -4,16 +4,25 @@ abstract class ProfessionalState extends Equatable {
const ProfessionalState();
@override
List<Object> get props => [];
List<Object?> get props => [];
}
class ProfessionalInitial extends ProfessionalState {}
class ProfessionalStateFailure extends ProfessionalState {
final String? message;
const ProfessionalStateFailure({this.message});
}
class ProfessionalStateProcess extends ProfessionalState {}
class LoadedModeProState extends ProfessionalState {
final bool isProModeActive;
final ProfessionalEntity? proInfo;
const LoadedModeProState(this.isProModeActive);
const LoadedModeProState(this.isProModeActive, this.proInfo);
@override
List<Object> get props => [isProModeActive];
List<Object?> get props => [isProModeActive, proInfo];
}
@@ -0,0 +1,23 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:professional_repository/professional_repository.dart';
part 'professional_profile_event.dart';
part 'professional_profile_state.dart';
class ProfessionalProfileBloc extends Bloc<ProfessionalProfileEvent, ProfessionalProfileState> {
final FirebaseProfessionalRepository _professionalRepository;
ProfessionalProfileBloc({required FirebaseProfessionalRepository professionalRepository}) : _professionalRepository = professionalRepository, super((UpdateProfessionalInfoInitial())) {
on<UpdateProfessionalInfo>(_onUpdateProfessionalInfo);
}
void _onUpdateProfessionalInfo(UpdateProfessionalInfo event, Emitter<ProfessionalProfileState> emit) async {
emit(UpdateProfessionalInfoLoading());
try {
emit(const UpdateProfessionalInfoSuccess());
} catch (e) {
emit(UpdateProfessionalInfoFailure());
}
}
}
@@ -0,0 +1,21 @@
part of 'professional_profile_bloc.dart';
abstract class ProfessionalProfileEvent extends Equatable {
const ProfessionalProfileEvent();
@override
List<Object?> get props => [];
}
class UpdateProfessionalInfo extends ProfessionalProfileEvent {
final ProfessionalEntity professional;
final String? fileBanner;
const UpdateProfessionalInfo({
required this.professional,
this.fileBanner,
});
@override
List<Object?> get props => [professional, fileBanner];
}
@@ -0,0 +1,21 @@
part of 'professional_profile_bloc.dart';
abstract class ProfessionalProfileState extends Equatable {
const ProfessionalProfileState();
@override
List<Object> get props => [];
}
class UpdateProfessionalInfoInitial extends ProfessionalProfileState {}
class UpdateProfessionalInfoFailure extends ProfessionalProfileState {}
class UpdateProfessionalInfoLoading extends ProfessionalProfileState {}
class UpdateProfessionalInfoSuccess extends ProfessionalProfileState {
const UpdateProfessionalInfoSuccess();
@override
List<Object> get props => [];
}
+1 -3
View File
@@ -8,9 +8,7 @@ part 'profile_state.dart';
class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
final UserRepository _userRepository;
ProfileBloc({
required UserRepository userRepository,
}) : _userRepository = userRepository,
ProfileBloc({required UserRepository userRepository,}) : _userRepository = userRepository,
super(UpdateUserInfoInitial()) {
on<UpdateUserInfo>(_onUpdateUserInfo);
}
@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:prosappco/components/general_drawer.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:professional_repository/professional_repository.dart';
import 'package:prosappco/blocs/professional_bloc/professional_bloc.dart';
class ProfessionalProfileScreen extends StatefulWidget {
const ProfessionalProfileScreen({super.key});
@@ -14,11 +16,34 @@ class _ProfessionalProfileScreenState extends State<ProfessionalProfileScreen> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Perfil Profesional'),
title: const Text('Perfil Profesional'),
),
body: Center(
child: Text('Perfil profesional'),
body: BlocBuilder<ProfessionalBloc, ProfessionalState>(
builder: (context, state) {
return Scaffold(
body: Center(
child: content(context, state),
),
);
},
),
);
}
content(BuildContext context, ProfessionalState state) {
if (state is LoadedModeProState) {
if (state.isProModeActive) {
if (state.proInfo == null) {
return const Text('Loading...');
} else {
return body(state.proInfo!);
}
}
}
return const Text('Go back');
}
body(ProfessionalEntity proInfo) {
return Text('Bienvenido Profesional ${proInfo.address}');
}
}