medora-provider/lib/screens/patientDashboard/registrationScreens/family_members_edit_screen.dart
DhanshCOSQ ec433190c4 UI complete (#2)
UI complete for patient registration

Co-authored-by: Benoy Bose <benoybose@gmail.com>
Reviewed-on: cosqnet/telemednet#2
Reviewed-by: Benoy Bose <benoybose@cosq.net>
Co-authored-by: DhanshCOSQ <dhanshas@cosq.net>
Co-committed-by: DhanshCOSQ <dhanshas@cosq.net>
2024-10-31 06:04:36 +00:00

163 lines
4.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:telemednet/screens/patientDashboard/registrationScreens/patient_family_members_screen.dart';
class FamilyMembersEditScreen extends StatefulWidget {
final FamilyMember? familyMember;
const FamilyMembersEditScreen({super.key, this.familyMember});
@override
State<FamilyMembersEditScreen> createState() =>
_FamilyMembersEditScreenState();
}
class _FamilyMembersEditScreenState extends State<FamilyMembersEditScreen> {
late TextEditingController nameController;
late TextEditingController relationController;
late TextEditingController genderController;
late TextEditingController dobController;
@override
void initState() {
super.initState();
nameController =
TextEditingController(text: widget.familyMember?.name ?? '');
relationController =
TextEditingController(text: widget.familyMember?.relation ?? '');
genderController =
TextEditingController(text: widget.familyMember?.gender ?? '');
dobController =
TextEditingController(text: widget.familyMember?.dateOfBirth ?? '');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Family member'),
actions: [
TextButton(
onPressed: () {
FamilyMember newMember = FamilyMember(
name: nameController.text,
relation: relationController.text,
gender: genderController.text,
dateOfBirth: dobController.text,
);
Navigator.pop(context, newMember);
},
child: const Text('Done', style: TextStyle(color: Colors.blue)),
),
],
),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextField(nameController, 'Name'),
_buildDropdownField('Relation', relationController.text,
(String? newValue) {
setState(() {
relationController.text = newValue ?? '';
});
}),
_buildDropdownField('Gender', genderController.text,
(String? newValue) {
setState(() {
genderController.text = newValue ?? '';
});
}),
_buildDateField(context),
const SizedBox(height: 16),
const Text('Address', style: TextStyle(fontSize: 16)),
const SizedBox(height: 8),
Card(
child: ListTile(
title: const Text('Enter address details'),
trailing: const Icon(Icons.chevron_right),
onTap: () {
// Navigate to address entry screen
},
),
),
],
),
),
);
}
Widget _buildTextField(TextEditingController controller, String label) {
return Padding(
padding: const EdgeInsets.only(bottom: 16),
child: TextField(
controller: controller,
decoration: InputDecoration(
labelText: label,
border: const OutlineInputBorder(),
),
),
);
}
Widget _buildDropdownField(
String label, String value, Function(String?) onChanged) {
return Padding(
padding: const EdgeInsets.only(bottom: 16),
child: DropdownButtonFormField<String>(
decoration: InputDecoration(
labelText: label,
border: const OutlineInputBorder(),
),
value: value.isEmpty ? null : value,
onChanged: onChanged,
items: <String>['Father', 'Mother', 'Son', 'Daughter']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
),
);
}
Widget _buildDateField(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(bottom: 16),
child: TextField(
controller: dobController,
decoration: const InputDecoration(
labelText: 'Date of Birth',
border: OutlineInputBorder(),
suffixIcon: Icon(Icons.calendar_today),
),
readOnly: true,
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime.now(),
);
if (pickedDate != null) {
setState(() {
dobController.text =
"${pickedDate.day}/${pickedDate.month}/${pickedDate.year}";
});
}
},
),
);
}
@override
void dispose() {
nameController.dispose();
relationController.dispose();
genderController.dispose();
dobController.dispose();
super.dispose();
}
}