profile page fix bugs

This commit is contained in:
mohammad
2024-07-28 15:27:34 +03:00
parent 0eae96503b
commit f27a9b0d8a
3 changed files with 8 additions and 21 deletions

View File

@ -23,8 +23,7 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
String timeZoneSelected = '';
String regionSelected = '';
final TextEditingController searchController = TextEditingController();
final TextEditingController nameController = TextEditingController(
text: '${HomeCubit.user!.firstName} ${HomeCubit.user!.lastName}');
final TextEditingController nameController = TextEditingController(text: '${HomeCubit.user!.firstName} ${HomeCubit.user!.lastName}');
List<TimeZone>? timeZoneList;
List<RegionModel>? regionList;
@ -240,25 +239,17 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
String? fullNameValidator(String? value) {
if (value == null) return 'Full name is required';
final withoutExtraSpaces = value.replaceAll(RegExp(r"\s+"), ' ').trim();
if (withoutExtraSpaces.length < 2 || withoutExtraSpaces.length > 30) {
return 'Full name must be between 2 and 30 characters long';
}
// Test if it contains anything but alphanumeric spaces and single quote
if (RegExp(r"/[^ a-zA-Z0-9-\']/").hasMatch(withoutExtraSpaces)) {
return 'Only alphanumeric characters, space, dash and single quote are allowed';
}
final parts = withoutExtraSpaces.split(' ');
if (parts.length < 2) return 'Full name must contain first and last names';
if (parts.length > 3) return 'Full name can at most contain 3 parts';
if (parts.length > 2) return 'Full name can at most contain 3 parts';
if (parts.any((part) => part.length < 2 || part.length > 30)) {
return 'Full name parts must be between 2 and 30 characters long';
}

View File

@ -24,9 +24,7 @@ class RegionPage extends StatelessWidget {
);
}
if (state is SaveState) {
new Future.delayed(const Duration(milliseconds: 500), () {
Navigator.of(context).pop(true);
});
Navigator.of(context).pop(true);
}
},
builder: (context, state) {

View File

@ -17,7 +17,7 @@ class TimeZoneScreenPage extends StatelessWidget {
return BlocProvider(
create: (BuildContext context) => ProfileBloc()..add(TimeZoneInitialEvent()),
child:
BlocConsumer<ProfileBloc, ProfileState>(listener: (context, state) {
BlocConsumer<ProfileBloc, ProfileState>(listener: (context, state) {
if (state is FailedState) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
@ -26,10 +26,8 @@ class TimeZoneScreenPage extends StatelessWidget {
),
);
}if (state is SaveState) {
new Future.delayed(const Duration(milliseconds: 500), () {
Navigator.of(context).pop(true);
});
}
Navigator.of(context).pop(true);
}
},
builder: (context, state) {
final profileBloc = BlocProvider.of<ProfileBloc>(context);
@ -38,8 +36,8 @@ class TimeZoneScreenPage extends StatelessWidget {
padding: const EdgeInsets.all(0),
title: 'Time Zone',
child: state is LoadingInitialState
? const Center(child: CircularProgressIndicator())
: Column(
? const Center(child: CircularProgressIndicator())
: Column(
children: [
TextFormField(
controller:profileBloc.searchController ,