profile page fix bugs

This commit is contained in:
mohammad
2024-07-30 09:38:15 +03:00
parent 63cdca5717
commit 553cc0bd7e
4 changed files with 77 additions and 74 deletions

View File

@ -24,8 +24,10 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
String regionSelected = '';
final TextEditingController searchController = TextEditingController();
final TextEditingController nameController = TextEditingController(text: '${HomeCubit.user!.firstName} ${HomeCubit.user!.lastName}');
List<TimeZone>? timeZoneList;
List<RegionModel>? regionList;
List<RegionModel> allRegions = [];
List<TimeZone> allTimeZone = [];
ProfileBloc() : super(InitialState()) {
@ -90,9 +92,9 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
Future _fetchTimeZone(TimeZoneInitialEvent event, Emitter<ProfileState> emit) async {
emit(LoadingInitialState());
try {
timeZoneList = await ProfileApi.fetchTimeZone();
emit(UpdateState(timeZoneList: timeZoneList!));
return timeZoneList;
allTimeZone = await ProfileApi.fetchTimeZone();
emit(TimeZoneLoadedState(timezone: allTimeZone));
return allTimeZone;
} catch (e) {
emit(FailedState(errorMessage: e.toString()));
return;
@ -123,33 +125,36 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
}
}
Future searchRegion(SearchRegionEvent event, Emitter<ProfileState> emit) async {
Future<void> searchRegion(SearchRegionEvent event, Emitter<ProfileState> emit) async {
emit(LoadingInitialState());
final query = event.query.toLowerCase();
if(event.query.isNotEmpty){
final filteredRegions = regionList?.where((region) {
if (allRegions.isEmpty) {
allRegions = await ProfileApi.fetchRegion();
}
if (query.isNotEmpty) {
final filteredRegions = allRegions.where((region) {
return region.name.toLowerCase().contains(query);
}).toList() ?? [];
regionList = filteredRegions;
}).toList();
emit(RegionsLoadedState(regions: filteredRegions));
}else{
regionList = await ProfileApi.fetchRegion();
emit(RegionsLoadedState(regions: regionList!));
} else {
emit(RegionsLoadedState(regions: allRegions));
}
}
Future searchTimeZone(SearchTimeZoneEvent event, Emitter<ProfileState> emit) async {
Future<void> searchTimeZone(SearchTimeZoneEvent event, Emitter<ProfileState> emit) async {
emit(LoadingInitialState());
final query = event.query.toLowerCase();
if(event.query.isNotEmpty){
final filtered = timeZoneList?.where((region) {
if (allTimeZone.isEmpty) {
allTimeZone = await ProfileApi.fetchTimeZone();
}
if (query.isNotEmpty) {
final filteredRegions = allTimeZone.where((region) {
return region.name.toLowerCase().contains(query);
}).toList() ?? [];
timeZoneList = filtered;
emit(TimeZoneLoadedState(regions: filtered));
}else{
timeZoneList = await ProfileApi.fetchTimeZone();
emit(UpdateState(timeZoneList: timeZoneList!));
}).toList();
emit(TimeZoneLoadedState(timezone: filteredRegions));
} else {
emit(TimeZoneLoadedState(timezone: allTimeZone));
}
}
@ -157,9 +162,8 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
void _fetchRegion(RegionInitialEvent event, Emitter<ProfileState> emit) async {
try {
emit(LoadingInitialState());
regionList = await ProfileApi.fetchRegion();
emit(RegionsLoadedState(regions: regionList!));
allRegions = await ProfileApi.fetchRegion();
emit(RegionsLoadedState(regions: allRegions));
} catch (e) {
emit(FailedState(errorMessage: e.toString()));
}