before rediense

This commit is contained in:
Felipe
2024-02-26 14:46:26 -05:00
parent 37b6665002
commit a1e367bdf3
10 changed files with 341 additions and 164 deletions
+59
View File
@@ -0,0 +1,59 @@
import 'package:flutter/material.dart';
class BirthDatePicker extends StatefulWidget {
final Function(DateTime) onDateSelected;
final TextEditingController controller;
const BirthDatePicker(
{super.key, required this.onDateSelected, required this.controller});
@override
State<BirthDatePicker> createState() => _BirthDatePickerState();
}
class _BirthDatePickerState extends State<BirthDatePicker> {
DateTime selectedDate =
DateTime.now().subtract(const Duration(days: 365 * 20));
Future<void> _selectDate(BuildContext context) async {
final DateTime? picked = await showDatePicker(
context: context,
initialDate: selectedDate,
firstDate: DateTime.now().subtract(const Duration(days: 365 * 120)),
lastDate: DateTime.now(),
);
if (picked != null && picked != selectedDate) {
setState(() {
selectedDate = picked;
widget.onDateSelected(selectedDate);
});
}
}
@override
Widget build(BuildContext context) {
return TextFormField(
onTap: () {
_selectDate(context);
},
readOnly: true,
decoration: InputDecoration(
labelText: 'Fecha de nacimiento',
prefixIcon: const Icon(Icons.calendar_month_rounded),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0),
),
errorBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.red),
borderRadius: BorderRadius.circular(10.0),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.red, width: 2.0),
borderRadius: BorderRadius.circular(10.0),
),
),
controller: widget.controller,
);
}
}
+53
View File
@@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
class GenderDropdown extends StatefulWidget {
final Function(String) onChanged;
const GenderDropdown({super.key, required this.onChanged});
@override
State<GenderDropdown> createState() => _GenderDropdownState();
}
class _GenderDropdownState extends State<GenderDropdown> {
String? selectedGender;
@override
Widget build(BuildContext context) {
return InputDecorator(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0),
),
prefixIcon: const Icon(Icons.groups),
contentPadding: const EdgeInsets.symmetric(
horizontal: 12.0,
vertical: 7.0,
),
),
child: DropdownButtonHideUnderline(
child: DropdownButton<String>(
isExpanded: true,
value: selectedGender,
hint: const Text(
'Selecciona tu género',
style: TextStyle(fontSize: 16.0),
),
onChanged: (String? newValue) {
setState(() {
selectedGender = newValue;
widget.onChanged(selectedGender!);
});
},
items: ['Masculino', 'Femenino', 'Otro']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
),
),
);
}
}
+6 -3
View File
@@ -26,10 +26,13 @@ class GeneralDrawerHeader extends StatelessWidget {
style: const TextStyle(fontWeight: FontWeight.bold),
),
subtitle: Text(
context.read<MyUserBloc>().state.user!.email ?? '',
context.read<MyUserBloc>().state.user!.email ??
context.read<MyUserBloc>().state.user!.phone ??
'',
style: const TextStyle(fontSize: 12),
),
leading: context.read<MyUserBloc>().state.user!.picture == ""
leading: context.read<MyUserBloc>().state.user!.picture == "" ||
context.read<MyUserBloc>().state.user!.picture == null
? Container(
width: 80,
height: 80,
@@ -51,7 +54,7 @@ class GeneralDrawerHeader extends StatelessWidget {
shape: BoxShape.circle,
image: DecorationImage(
image: NetworkImage(
context.read<MyUserBloc>().state.user!.picture!,
context.read<MyUserBloc>().state.user?.picture ?? '',
),
fit: BoxFit.cover,
),