diff --git a/lib/screens/city/city_screen.dart b/lib/screens/city/city_screen.dart index 52f4252..459e055 100644 --- a/lib/screens/city/city_screen.dart +++ b/lib/screens/city/city_screen.dart @@ -64,7 +64,8 @@ class _CityScreenState extends State { _isLoading ? _buildShimmerEffect() : Expanded( - child: _filteredCities != null && _filteredCities!.isNotEmpty + child: _filteredCities != null && + _filteredCities!.isNotEmpty ? ListView.builder( itemCount: _filteredCities!.length, itemBuilder: (BuildContext context, int index) { @@ -81,7 +82,8 @@ class _CityScreenState extends State { style: const TextStyle(color: Colors.black54), ), onTap: () { - // Handle city selection + Navigator.pop(context, + _filteredCities![index].cityName); }, ); }, diff --git a/lib/screens/profile/profile_screen.dart b/lib/screens/profile/profile_screen.dart index e1f18ce..ed6266d 100644 --- a/lib/screens/profile/profile_screen.dart +++ b/lib/screens/profile/profile_screen.dart @@ -25,6 +25,7 @@ class ProfileScreen extends StatefulWidget { class _ProfileScreenState extends State { final TextEditingController _nameController = TextEditingController(); + final TextEditingController _cityController = TextEditingController(); final TextEditingController _emailController = TextEditingController(); final TextEditingController _newEmailController = TextEditingController(); final TextEditingController _phoneController = TextEditingController(); @@ -46,12 +47,13 @@ class _ProfileScreenState extends State { @override void dispose() { _nameController.dispose(); + _cityController.dispose(); _emailController.dispose(); + _newEmailController.dispose(); _phoneController.dispose(); _birthdayController.dispose(); _genderController.dispose(); _passwordController.dispose(); - _newEmailController.dispose(); super.dispose(); } @@ -131,10 +133,10 @@ class _ProfileScreenState extends State { ), const SizedBox(height: 20.0), TextFormField( - // controller: _nameController, + controller: _cityController, readOnly: true, - onTap: () { - Navigator.push( + onTap: () async { + final cityName = await Navigator.push( context, CupertinoPageRoute( builder: (BuildContext context) { @@ -142,6 +144,10 @@ class _ProfileScreenState extends State { }, ), ); + + if (cityName != null) { + _cityController.text = cityName; + } }, decoration: const InputDecoration( labelText: 'Ciudad', @@ -194,6 +200,17 @@ class _ProfileScreenState extends State { onTap: () { if (state.user!.name == null || state.user!.name == '') { + ScaffoldMessenger.of(context).clearSnackBars(); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text( + 'Por favor, ingrese su nombre'))); + return; + } + + if (state.user!.city == null || + state.user!.city == '') { + ScaffoldMessenger.of(context).clearSnackBars(); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text( @@ -220,6 +237,17 @@ class _ProfileScreenState extends State { onTap: () { if (state.user!.name == null || state.user!.name == '') { + ScaffoldMessenger.of(context).clearSnackBars(); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text( + 'Por favor, ingrese su nombre'))); + return; + } + + if (state.user!.city == null || + state.user!.city == '') { + ScaffoldMessenger.of(context).clearSnackBars(); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text( @@ -263,16 +291,19 @@ class _ProfileScreenState extends State { if (_nameController.text.isEmpty) { ScaffoldMessenger.of(context).clearSnackBars(); - - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar(content: Text('Por favor, ingrese su nombre')), - ); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('Por favor, ingrese su nombre'))); return; } + if (_cityController.text.isEmpty) { + ScaffoldMessenger.of(context).clearSnackBars(); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('Por favor, ingrese su ciudad'))); + } + final myUser = state.user!.copyWith( name: _nameController.text, + city: _cityController.text, nickname: _nameController.text.trim().toLowerCase(), email: _emailController.text, phone: _phoneController.text, @@ -280,9 +311,7 @@ class _ProfileScreenState extends State { gender: _genderController.text, ); - context - .read() - .add(UpdateUserInfo(myUser: myUser, filePicture: _imageFile?.path)); + context.read().add(UpdateUserInfo(myUser: myUser, filePicture: _imageFile?.path)); Navigator.pop(context); }, diff --git a/packages/user_repository/lib/src/entities/my_user_entity.dart b/packages/user_repository/lib/src/entities/my_user_entity.dart index 7578640..19e486e 100644 --- a/packages/user_repository/lib/src/entities/my_user_entity.dart +++ b/packages/user_repository/lib/src/entities/my_user_entity.dart @@ -6,6 +6,7 @@ class MyUserEntity extends Equatable { final String? phone; final String? name; final String? nickname; + final String? city; final String? picture; final String? birthday; final String? gender; @@ -16,6 +17,7 @@ class MyUserEntity extends Equatable { required this.phone, required this.name, required this.nickname, + required this.city, required this.picture, required this.birthday, required this.gender, @@ -28,6 +30,7 @@ class MyUserEntity extends Equatable { 'phone': phone, 'name': name, 'nickname': name?.trim().toLowerCase(), + 'city': city, 'picture': picture, 'birthday': birthday, 'gender': gender, @@ -41,6 +44,7 @@ class MyUserEntity extends Equatable { phone: doc['phone'] as String?, name: doc['name'] as String?, nickname: doc['nickname'] as String?, + city: doc['city'] as String?, picture: doc['picture'] as String?, birthday: doc['birthday'] as String?, gender: doc['gender'] as String?, @@ -49,7 +53,7 @@ class MyUserEntity extends Equatable { @override List get props => - [id, email, phone, name, nickname, picture, birthday, gender]; + [id, email, phone, name, nickname, city, picture, birthday, gender]; @override String toString() { @@ -59,6 +63,7 @@ class MyUserEntity extends Equatable { phone: $phone name: $name nickname: $nickname + city: $city picture: $picture birthday: $birthday gender: $gender diff --git a/packages/user_repository/lib/src/models/my_user.dart b/packages/user_repository/lib/src/models/my_user.dart index 3387941..38af5d5 100644 --- a/packages/user_repository/lib/src/models/my_user.dart +++ b/packages/user_repository/lib/src/models/my_user.dart @@ -8,6 +8,7 @@ class MyUser extends Equatable { final String? phone; final String? name; final String? nickname; + final String? city; final String? picture; final String? birthday; final String? gender; @@ -18,6 +19,7 @@ class MyUser extends Equatable { this.phone, this.name, this.nickname, + this.city, this.picture, this.birthday, this.gender, @@ -36,6 +38,7 @@ class MyUser extends Equatable { phone: '', name: '', nickname: '', + city: '', picture: '', birthday: '', gender: '', @@ -48,6 +51,7 @@ class MyUser extends Equatable { String? phone, String? name, String? nickname, + String? city, String? picture, String? birthday, String? gender, @@ -58,6 +62,7 @@ class MyUser extends Equatable { phone: phone ?? this.phone, name: name ?? this.name, nickname: nickname ?? this.nickname, + city: city ?? this.city, picture: picture ?? this.picture, birthday: birthday ?? this.birthday, gender: gender ?? this.gender, @@ -77,6 +82,7 @@ class MyUser extends Equatable { phone: phone, name: name, nickname: nickname, + city: city, picture: picture, birthday: birthday, gender: gender, @@ -90,6 +96,7 @@ class MyUser extends Equatable { phone: entity.phone, name: entity.name, nickname: entity.nickname, + city: entity.city, picture: entity.picture, birthday: entity.birthday, gender: entity.gender, @@ -97,6 +104,15 @@ class MyUser extends Equatable { } @override - List get props => - [id, email, phone, name, nickname, picture, birthday, gender]; + List get props => [ + id, + email, + phone, + name, + nickname, + city, + picture, + birthday, + gender, + ]; }