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>
154 lines
3.9 KiB
Dart
154 lines
3.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:telemednet/screens/patientDashboard/registrationScreens/family_members_edit_screen.dart';
|
|
|
|
class FamilyMember {
|
|
final String name;
|
|
final String gender;
|
|
final String dateOfBirth;
|
|
final String relation;
|
|
|
|
FamilyMember({
|
|
required this.name,
|
|
required this.gender,
|
|
required this.dateOfBirth,
|
|
required this.relation,
|
|
});
|
|
}
|
|
|
|
class PatientFamilyMembersScreen extends StatefulWidget {
|
|
const PatientFamilyMembersScreen({super.key});
|
|
|
|
@override
|
|
State<PatientFamilyMembersScreen> createState() =>
|
|
_PatientFamilyMembersScreenState();
|
|
}
|
|
|
|
class _PatientFamilyMembersScreenState
|
|
extends State<PatientFamilyMembersScreen> {
|
|
List<FamilyMember> familyMembers = [
|
|
FamilyMember(
|
|
name: "Dhansh A S",
|
|
gender: "Male",
|
|
dateOfBirth: "18/12/2001",
|
|
relation: "Father",
|
|
),
|
|
];
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text('Family members'),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () {
|
|
// Handle 'Done' action
|
|
},
|
|
child: Text('Done', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
],
|
|
),
|
|
body: ListView.builder(
|
|
itemCount: familyMembers.length,
|
|
itemBuilder: (context, index) {
|
|
return FamilyMemberCard(
|
|
familyMember: familyMembers[index],
|
|
onEdit: () => _editFamilyMember(index),
|
|
onDelete: () => _deleteFamilyMember(index),
|
|
);
|
|
},
|
|
),
|
|
floatingActionButton: FloatingActionButton(
|
|
onPressed: _addFamilyMember,
|
|
child: Icon(Icons.add),
|
|
backgroundColor: Colors.blue,
|
|
),
|
|
);
|
|
}
|
|
|
|
void _addFamilyMember() {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(builder: (context) => const FamilyMembersEditScreen()),
|
|
).then((newMember) {
|
|
if (newMember != null) {
|
|
setState(() {
|
|
familyMembers.add(newMember);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
void _editFamilyMember(int index) {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) =>
|
|
FamilyMembersEditScreen(familyMember: familyMembers[index]),
|
|
),
|
|
).then((editedMember) {
|
|
if (editedMember != null) {
|
|
setState(() {
|
|
familyMembers[index] = editedMember;
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
void _deleteFamilyMember(int index) {
|
|
setState(() {
|
|
familyMembers.removeAt(index);
|
|
});
|
|
}
|
|
}
|
|
|
|
class FamilyMemberCard extends StatelessWidget {
|
|
final FamilyMember familyMember;
|
|
final VoidCallback onEdit;
|
|
final VoidCallback onDelete;
|
|
|
|
const FamilyMemberCard({
|
|
super.key,
|
|
required this.familyMember,
|
|
required this.onEdit,
|
|
required this.onDelete,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Card(
|
|
margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
|
|
child: Padding(
|
|
padding: EdgeInsets.all(16),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Text('Name: ${familyMember.name}',
|
|
style: TextStyle(fontWeight: FontWeight.bold)),
|
|
SizedBox(height: 4),
|
|
Text('Gender: ${familyMember.gender}'),
|
|
SizedBox(height: 4),
|
|
Text('Date of Birth: ${familyMember.dateOfBirth}'),
|
|
SizedBox(height: 4),
|
|
Text('Relation: ${familyMember.relation}'),
|
|
SizedBox(height: 8),
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
children: [
|
|
IconButton(
|
|
icon: Icon(Icons.edit, color: Colors.blue),
|
|
onPressed: onEdit,
|
|
),
|
|
IconButton(
|
|
icon: Icon(Icons.delete, color: Colors.red),
|
|
onPressed: onDelete,
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|