import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_progress_hud/flutter_progress_hud.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:unit2/bloc/profile/profile_bloc.dart'; import 'package:unit2/bloc/user/user_bloc.dart'; import 'package:unit2/model/profile/family_backround.dart'; import 'package:unit2/theme-data.dart/box_shadow.dart'; import 'package:unit2/theme-data.dart/colors.dart'; import 'package:unit2/utils/global.dart'; import 'package:unit2/utils/text_container.dart'; import '../../../bloc/profile/family/family_bloc.dart'; class FamilyBackgroundScreen extends StatefulWidget { const FamilyBackgroundScreen({ super.key, }); @override State createState() => _FamilyBackgroundScreenState(); } class _FamilyBackgroundScreenState extends State { FamilyBackground? father; FamilyBackground? mother; FamilyBackground? spouse; List children = []; List otherRelated = []; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text(familyBackgroundScreenTitle), centerTitle: true, backgroundColor: primary, ), body: ProgressHUD( padding: const EdgeInsets.all(24), backgroundColor: Colors.black87, indicatorWidget: const SpinKitFadingCircle(color: Colors.white), child: BlocBuilder( builder: (context, state) { return BlocBuilder( builder: (context, state) { if (state is ProfileLoaded) { return BlocConsumer( listener: (context, state) { if (state is FamilyLoadingState) { final progress = ProgressHUD.of(context); progress!.showWithText("Please wait..."); } if (state is FamilyLoaded || state is FamilyErrorState) { final progress = ProgressHUD.of(context); progress!.dismiss(); } }, builder: (context, state) { if (state is FamilyLoaded) { father = state.families.firstWhere( (element) => element.relationship!.id == 1); mother = state.families.firstWhere( (element) => element.relationship!.id == 2); spouse = state.families.firstWhere( (element) => element.relationship!.id == 3); // get all children var childs = state.families .where((element) => element.relationship!.id == 4); if (childs.isNotEmpty) { for (var element in childs) { children.add(element); } } //get all related persons var relateds = state.families .where((element) => element.relationship!.id! > 4); if (relateds.isNotEmpty) { for (var element in relateds) { otherRelated.add(element); } } return ListView(children: [ //Father---------------------------------------------- Container( decoration: box1(), padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8), width: screenWidth, child: Row( children: [ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text(fatherText), const SizedBox( height: 5, ), Text( " ${father!.relatedPerson!.firstName} ${father!.relatedPerson!.middleName} ${father!.relatedPerson!.lastName} ${father!.relatedPerson!.nameExtension ?? ''},", style: Theme.of(context) .textTheme .titleMedium! .copyWith( fontWeight: FontWeight.w500), ), Text( " ", style: Theme.of(context) .textTheme .bodySmall, ), Row( children: [ Checkbox( value: false, onChanged: (value) { setState(() { value = !value!; }); }), const Text(incaseOfEmergency) ], ) ]), ), IconButton( onPressed: () {}, icon: const Icon( Icons.more_vert, color: Colors.grey, )) ], ), ), const SizedBox( height: 5, ), //Mother----------------------------------------------------- Container( decoration: box1(), padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8), width: screenWidth, child: Row( children: [ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text(motherText), const SizedBox( height: 5, ), Text( " ${mother!.relatedPerson!.firstName} ${mother!.relatedPerson!.middleName} ${mother!.relatedPerson!.lastName} ${mother!.relatedPerson!.nameExtension ?? ''}", style: Theme.of(context) .textTheme .titleMedium! .copyWith( fontWeight: FontWeight.w500), ), Text(" ", style: Theme.of(context) .textTheme .bodySmall), Row( children: [ Checkbox( value: false, onChanged: (value) {}), const Text(incaseOfEmergency) ], ) ]), ), IconButton( onPressed: () {}, icon: const Icon( Icons.more_vert, color: Colors.grey, )) ], ), ), const SizedBox( height: 5, ), //Spouse --------------------------------------------------------- spouse != null ? Container( decoration: box1(), padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8), width: screenWidth, child: Row( children: [ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text(spouseText), const SizedBox( height: 5, ), Text( " ${spouse!.relatedPerson!.firstName} ${spouse!.relatedPerson!.middleName} ${spouse!.relatedPerson!.lastName} ${spouse!.relatedPerson!.nameExtension ?? ''}", style: Theme.of(context) .textTheme .titleMedium! .copyWith( fontWeight: FontWeight.w500)), Text(" ", style: Theme.of(context) .textTheme .bodySmall), Row( children: [ Checkbox( value: false, onChanged: (value) {}), const Text(incaseOfEmergency) ], ) ]), ), IconButton( onPressed: () {}, icon: const Icon( Icons.more_vert, color: Colors.grey, )) ], ), ) : const SizedBox(), const SizedBox( height: 5, ), // Childrens ---------------------------------- children.isNotEmpty ? Container( decoration: box1(), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: children.map((child) { int index = children.indexOf(child); return Container( padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8), width: screenWidth, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ index == 0 ? const Text(childrenText) : const SizedBox(), const SizedBox( height: 5, ), Row( children: [ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment .start, crossAxisAlignment: CrossAxisAlignment .start, children: [ Text( " ${child.relatedPerson!.firstName} ${child.relatedPerson!.middleName} ${child.relatedPerson!.lastName} ${child.relatedPerson!.nameExtension ?? ''}", style: Theme.of( context) .textTheme .titleMedium! .copyWith( fontWeight: FontWeight .w500)), Text(" ", style: Theme.of( context) .textTheme .bodySmall), Row( children: [ Checkbox( value: false, onChanged: (value) {}), const Text( incaseOfEmergency) ], ) ]), ), IconButton( onPressed: () {}, icon: const Icon( Icons.more_vert, color: Colors.grey, )) ], ), ], ), ); }).toList()), ) : const SizedBox(), const SizedBox( height: 5, ), //Other related person otherRelated.isNotEmpty ? Container( decoration: box1(), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: otherRelated.map((relative) { int index2 = otherRelated.indexOf(relative); return Container( padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8), width: screenWidth, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ index2 == 0 ? const Text(otherRelatedText) : const SizedBox(), const SizedBox( height: 5, ), Row( children: [ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment .start, crossAxisAlignment: CrossAxisAlignment .start, children: [ Text( " ${relative.relatedPerson!.firstName} ${relative.relatedPerson!.middleName} ${relative.relatedPerson!.lastName} ${relative.relatedPerson!.nameExtension ?? ''}", style: Theme.of( context) .textTheme .titleMedium! .copyWith( fontWeight: FontWeight .w500)), Text(" ", style: Theme.of( context) .textTheme .bodySmall!), Row( children: [ Checkbox( value: false, onChanged: (value) {}), const Text( incaseOfEmergency) ], ) ]), ), IconButton( onPressed: () {}, icon: const Icon( Icons.more_vert, color: Colors.grey, )) ], ), ], ), ); }).toList()), ) : const SizedBox(), ]); } return Container(); }, ); } return Container(); }, ); }, ), ), ); } }