This commit is contained in:
Felipe
2024-03-13 14:38:47 -05:00
parent a25bc6a987
commit 6806703360
4 changed files with 68 additions and 16 deletions
+4 -2
View File
@@ -64,7 +64,8 @@ class _CityScreenState extends State<CityScreen> {
_isLoading _isLoading
? _buildShimmerEffect() ? _buildShimmerEffect()
: Expanded( : Expanded(
child: _filteredCities != null && _filteredCities!.isNotEmpty child: _filteredCities != null &&
_filteredCities!.isNotEmpty
? ListView.builder( ? ListView.builder(
itemCount: _filteredCities!.length, itemCount: _filteredCities!.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
@@ -81,7 +82,8 @@ class _CityScreenState extends State<CityScreen> {
style: const TextStyle(color: Colors.black54), style: const TextStyle(color: Colors.black54),
), ),
onTap: () { onTap: () {
// Handle city selection Navigator.pop(context,
_filteredCities![index].cityName);
}, },
); );
}, },
+40 -11
View File
@@ -25,6 +25,7 @@ class ProfileScreen extends StatefulWidget {
class _ProfileScreenState extends State<ProfileScreen> { class _ProfileScreenState extends State<ProfileScreen> {
final TextEditingController _nameController = TextEditingController(); final TextEditingController _nameController = TextEditingController();
final TextEditingController _cityController = TextEditingController();
final TextEditingController _emailController = TextEditingController(); final TextEditingController _emailController = TextEditingController();
final TextEditingController _newEmailController = TextEditingController(); final TextEditingController _newEmailController = TextEditingController();
final TextEditingController _phoneController = TextEditingController(); final TextEditingController _phoneController = TextEditingController();
@@ -46,12 +47,13 @@ class _ProfileScreenState extends State<ProfileScreen> {
@override @override
void dispose() { void dispose() {
_nameController.dispose(); _nameController.dispose();
_cityController.dispose();
_emailController.dispose(); _emailController.dispose();
_newEmailController.dispose();
_phoneController.dispose(); _phoneController.dispose();
_birthdayController.dispose(); _birthdayController.dispose();
_genderController.dispose(); _genderController.dispose();
_passwordController.dispose(); _passwordController.dispose();
_newEmailController.dispose();
super.dispose(); super.dispose();
} }
@@ -131,10 +133,10 @@ class _ProfileScreenState extends State<ProfileScreen> {
), ),
const SizedBox(height: 20.0), const SizedBox(height: 20.0),
TextFormField( TextFormField(
// controller: _nameController, controller: _cityController,
readOnly: true, readOnly: true,
onTap: () { onTap: () async {
Navigator.push( final cityName = await Navigator.push(
context, context,
CupertinoPageRoute( CupertinoPageRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
@@ -142,6 +144,10 @@ class _ProfileScreenState extends State<ProfileScreen> {
}, },
), ),
); );
if (cityName != null) {
_cityController.text = cityName;
}
}, },
decoration: const InputDecoration( decoration: const InputDecoration(
labelText: 'Ciudad', labelText: 'Ciudad',
@@ -194,6 +200,17 @@ class _ProfileScreenState extends State<ProfileScreen> {
onTap: () { onTap: () {
if (state.user!.name == null || if (state.user!.name == null ||
state.user!.name == '') { 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( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( const SnackBar(
content: Text( content: Text(
@@ -220,6 +237,17 @@ class _ProfileScreenState extends State<ProfileScreen> {
onTap: () { onTap: () {
if (state.user!.name == null || if (state.user!.name == null ||
state.user!.name == '') { 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( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( const SnackBar(
content: Text( content: Text(
@@ -263,16 +291,19 @@ class _ProfileScreenState extends State<ProfileScreen> {
if (_nameController.text.isEmpty) { if (_nameController.text.isEmpty) {
ScaffoldMessenger.of(context).clearSnackBars(); 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; 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( final myUser = state.user!.copyWith(
name: _nameController.text, name: _nameController.text,
city: _cityController.text,
nickname: _nameController.text.trim().toLowerCase(), nickname: _nameController.text.trim().toLowerCase(),
email: _emailController.text, email: _emailController.text,
phone: _phoneController.text, phone: _phoneController.text,
@@ -280,9 +311,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
gender: _genderController.text, gender: _genderController.text,
); );
context context.read<ProfileBloc>().add(UpdateUserInfo(myUser: myUser, filePicture: _imageFile?.path));
.read<ProfileBloc>()
.add(UpdateUserInfo(myUser: myUser, filePicture: _imageFile?.path));
Navigator.pop(context); Navigator.pop(context);
}, },
@@ -6,6 +6,7 @@ class MyUserEntity extends Equatable {
final String? phone; final String? phone;
final String? name; final String? name;
final String? nickname; final String? nickname;
final String? city;
final String? picture; final String? picture;
final String? birthday; final String? birthday;
final String? gender; final String? gender;
@@ -16,6 +17,7 @@ class MyUserEntity extends Equatable {
required this.phone, required this.phone,
required this.name, required this.name,
required this.nickname, required this.nickname,
required this.city,
required this.picture, required this.picture,
required this.birthday, required this.birthday,
required this.gender, required this.gender,
@@ -28,6 +30,7 @@ class MyUserEntity extends Equatable {
'phone': phone, 'phone': phone,
'name': name, 'name': name,
'nickname': name?.trim().toLowerCase(), 'nickname': name?.trim().toLowerCase(),
'city': city,
'picture': picture, 'picture': picture,
'birthday': birthday, 'birthday': birthday,
'gender': gender, 'gender': gender,
@@ -41,6 +44,7 @@ class MyUserEntity extends Equatable {
phone: doc['phone'] as String?, phone: doc['phone'] as String?,
name: doc['name'] as String?, name: doc['name'] as String?,
nickname: doc['nickname'] as String?, nickname: doc['nickname'] as String?,
city: doc['city'] as String?,
picture: doc['picture'] as String?, picture: doc['picture'] as String?,
birthday: doc['birthday'] as String?, birthday: doc['birthday'] as String?,
gender: doc['gender'] as String?, gender: doc['gender'] as String?,
@@ -49,7 +53,7 @@ class MyUserEntity extends Equatable {
@override @override
List<Object?> get props => List<Object?> get props =>
[id, email, phone, name, nickname, picture, birthday, gender]; [id, email, phone, name, nickname, city, picture, birthday, gender];
@override @override
String toString() { String toString() {
@@ -59,6 +63,7 @@ class MyUserEntity extends Equatable {
phone: $phone phone: $phone
name: $name name: $name
nickname: $nickname nickname: $nickname
city: $city
picture: $picture picture: $picture
birthday: $birthday birthday: $birthday
gender: $gender gender: $gender
@@ -8,6 +8,7 @@ class MyUser extends Equatable {
final String? phone; final String? phone;
final String? name; final String? name;
final String? nickname; final String? nickname;
final String? city;
final String? picture; final String? picture;
final String? birthday; final String? birthday;
final String? gender; final String? gender;
@@ -18,6 +19,7 @@ class MyUser extends Equatable {
this.phone, this.phone,
this.name, this.name,
this.nickname, this.nickname,
this.city,
this.picture, this.picture,
this.birthday, this.birthday,
this.gender, this.gender,
@@ -36,6 +38,7 @@ class MyUser extends Equatable {
phone: '', phone: '',
name: '', name: '',
nickname: '', nickname: '',
city: '',
picture: '', picture: '',
birthday: '', birthday: '',
gender: '', gender: '',
@@ -48,6 +51,7 @@ class MyUser extends Equatable {
String? phone, String? phone,
String? name, String? name,
String? nickname, String? nickname,
String? city,
String? picture, String? picture,
String? birthday, String? birthday,
String? gender, String? gender,
@@ -58,6 +62,7 @@ class MyUser extends Equatable {
phone: phone ?? this.phone, phone: phone ?? this.phone,
name: name ?? this.name, name: name ?? this.name,
nickname: nickname ?? this.nickname, nickname: nickname ?? this.nickname,
city: city ?? this.city,
picture: picture ?? this.picture, picture: picture ?? this.picture,
birthday: birthday ?? this.birthday, birthday: birthday ?? this.birthday,
gender: gender ?? this.gender, gender: gender ?? this.gender,
@@ -77,6 +82,7 @@ class MyUser extends Equatable {
phone: phone, phone: phone,
name: name, name: name,
nickname: nickname, nickname: nickname,
city: city,
picture: picture, picture: picture,
birthday: birthday, birthday: birthday,
gender: gender, gender: gender,
@@ -90,6 +96,7 @@ class MyUser extends Equatable {
phone: entity.phone, phone: entity.phone,
name: entity.name, name: entity.name,
nickname: entity.nickname, nickname: entity.nickname,
city: entity.city,
picture: entity.picture, picture: entity.picture,
birthday: entity.birthday, birthday: entity.birthday,
gender: entity.gender, gender: entity.gender,
@@ -97,6 +104,15 @@ class MyUser extends Equatable {
} }
@override @override
List<Object?> get props => List<Object?> get props => [
[id, email, phone, name, nickname, picture, birthday, gender]; id,
email,
phone,
name,
nickname,
city,
picture,
birthday,
gender,
];
} }