pro info
This commit is contained in:
@@ -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 => [];
|
||||
}
|
||||
@@ -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}');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user