import 'package:expandable_group/expandable_group_widget.dart'; 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:fluttericon/brandico_icons.dart'; import 'package:fluttericon/elusive_icons.dart'; import 'package:fluttericon/entypo_icons.dart'; import 'package:fluttericon/font_awesome5_icons.dart'; import 'package:fluttericon/modern_pictograms_icons.dart'; import 'package:unit2/bloc/education/education_bloc.dart'; import 'package:unit2/bloc/eligibility/eligibility_bloc.dart'; import 'package:unit2/bloc/learningDevelopment/learning_development_bloc.dart'; import 'package:unit2/bloc/profile/profile_bloc.dart'; import 'package:unit2/bloc/workHistory/workHistory_bloc.dart'; import 'package:unit2/model/login_data/employee_info/employee_info.dart'; import 'package:unit2/screens/profile/components/basic_information/address_screen.dart'; import 'package:unit2/screens/profile/components/basic_information/citizenship_screen.dart'; import 'package:unit2/screens/profile/components/basic_information/contact_information_screen.dart'; import 'package:unit2/screens/profile/components/basic_information/identification_information_screen.dart'; import 'package:unit2/screens/profile/components/basic_information/primary_information_screen.dart'; import 'package:unit2/screens/profile/components/education_screen.dart'; import 'package:unit2/screens/profile/components/eligibility_screen.dart'; import 'package:unit2/screens/profile/components/family_background_screen.dart'; import 'package:unit2/screens/profile/components/learning_and_development_screen.dart'; import 'package:unit2/screens/profile/components/loading_screen.dart'; import 'package:unit2/screens/profile/components/other_information/non_academic_recognition_screen.dart'; import 'package:unit2/screens/profile/components/other_information/org_membership_screen.dart'; import 'package:unit2/screens/profile/components/other_information/skills_and_hobbies_screen.dart'; import 'package:unit2/screens/profile/components/references_screen.dart'; import 'package:unit2/screens/profile/components/work_history_screen.dart'; import 'package:unit2/screens/profile/components/voluntary_works_screen.dart'; import 'package:unit2/theme-data.dart/colors.dart'; import '../../bloc/user/user_bloc.dart'; import 'components/main_menu.dart'; import 'components/submenu.dart'; class ProfileInfo extends StatefulWidget { const ProfileInfo({super.key}); @override State createState() => _ProfileInfoState(); } class _ProfileInfoState extends State { int? profileId; String? token; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: primary, centerTitle: true, title: const Text('Profile'), ), body: ProgressHUD( backgroundColor: Colors.black87, indicatorWidget: const SpinKitFadingCircle(color: Colors.white), child: BlocBuilder(builder: (context, state) { if (state is UserLoggedIn) { profileId = state.userData!.user!.login!.user!.profileId; token = state.userData!.user!.login!.token!; return BlocConsumer( listener: (context, state) { if (state is ProfileLoading) { final progress = ProgressHUD.of(context); progress?.showWithText( 'Loading Profile', ); } if (state is ProfileLoaded || state is ProfileErrorState) { final progress = ProgressHUD.of(context); progress?.dismiss(); } }, builder: (context, state) { if (state is ProfileLoaded) { return Container( padding: const EdgeInsets.symmetric( vertical: 12, horizontal: 12), child: ListView( children: [ Text( "View and Update your Profile Information", textAlign: TextAlign.center, style: Theme.of(context).textTheme.bodyLarge, ), ExpandableGroup( collapsedIcon: const Icon(Icons.keyboard_arrow_down), expandedIcon: const Icon(Icons.keyboard_arrow_up), header: const ListTile( leading: Icon( Elusive.address_book, color: primary, ), title: Text( "Basic Information", style: TextStyle(fontWeight: FontWeight.bold), ), ), items: [ subMenu(Icons.person, "Primary", () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return PrimaryInfo( primaryInformation: state .profileInformation .basicInfo .primaryInformation!); })); }), subMenu(Icons.home, "Home Addresses", () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return AddressScreen( addresses: state.profileInformation .basicInfo.addresses); })); }), subMenu(Icons.contact_mail, "Identifications", () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return IdentificationsScreen( identities: state.profileInformation .basicInfo.identifications); })); }), subMenu(Icons.contact_phone, "Contact Info", () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return ContactInformationScreen( contacts: state.profileInformation .basicInfo.contactInformation, ); })); }), subMenu(Icons.flag, "Citizenships", () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return CitizenShipScreen( citizenships: state.profileInformation .basicInfo.citizenships, ); })); }), ]), const Divider(), MainMenu( icon: Elusive.group, title: "Family", onTap: () { }, ), const Divider(), MainMenu( icon: FontAwesome5.graduation_cap, title: "Education", onTap: () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return BlocProvider( create: (context) => EducationBloc()..add(GetEducationalBackground(profileId: profileId!, token: token!)), child: const EducationScreen(), ); })); }, ), const Divider(), MainMenu( icon: Icons.stars, title: "Eligibility", onTap: () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return BlocProvider( create: (context) => EligibilityBloc()..add(GetEligibilities(profileId: profileId!, token: token!)), child: const EligibiltyScreen(), ); })); }, ), const Divider(), MainMenu( icon: FontAwesome5.shopping_bag, title: "Work History", onTap: () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return BlocProvider( create: (context) => WorkHistoryBloc()..add(GetWorkHistories(profileId: profileId!, token: token!)), child: const WorkHistoryScreen(), ); })); }, ), const Divider(), MainMenu( icon: FontAwesome5.walking, title: "Voluntary Work & Civic Services", onTap: () { // Navigator.push(context, MaterialPageRoute( // builder: (BuildContext context) { // return VolunataryWorkScreen( // voluntaryWorks: state // .profileInformation.voluntaryWorks); // })); }, ), const Divider(), MainMenu( icon: Elusive.lightbulb, title: "Learning & Development", onTap: () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return BlocProvider( create: (context) => LearningDevelopmentBloc()..add(GetLearningDevelopments(profileId: profileId!, token: token!)), child: const LearningAndDevelopmentScreen(), ); })); }, ), const Divider(), MainMenu( icon: Brandico.codepen, title: "Personal References", onTap: () { // Navigator.push(context, MaterialPageRoute( // builder: (BuildContext context) { // return ReferencesScreen( // references: // state.profileInformation.references); // })); }, ), ExpandableGroup( collapsedIcon: const Icon(Icons.keyboard_arrow_down), expandedIcon: const Icon(Icons.keyboard_arrow_up), header: const ListTile( leading: Icon( Icons.info, color: primary, ), title: Text( "Other Information", style: TextStyle(fontWeight: FontWeight.bold), ), ), items: [ subMenu( Icons.fitness_center, "Skills & Hobbies", () { // Navigator.push(context, MaterialPageRoute( // builder: (BuildContext context) { // return SkillHobbiesScreen( // skillsHobbies: state.profileInformation // .otherInformation.skillsAndHobbies); // })); }), subMenu(FontAwesome5.certificate, "Organization Memberships", () { // Navigator.push(context, MaterialPageRoute( // builder: (BuildContext context) { // return OrgMembershipsScreen( // orgMemberships: state.profileInformation // .otherInformation.orgMemberships); // })); }), subMenu(Entypo.doc_text, "Non-Academic Recognitions", () { // Navigator.push(context, MaterialPageRoute( // builder: (BuildContext context) { // return NonAcademicRecognitionScreen( // nonAcademicRecognitions: state // .profileInformation // .otherInformation // .nonAcademicRecognition); // })); }), ]), ExpandableGroup( collapsedIcon: const Icon(Icons.keyboard_arrow_down), expandedIcon: const Icon(Icons.keyboard_arrow_up), header: const ListTile( leading: Icon( FontAwesome5.laptop_house, color: primary, ), title: Text( "Assets", style: TextStyle(fontWeight: FontWeight.bold), ), ), items: [ subMenu(ModernPictograms.home, "Real Property Tax", () {}), ]), ], ), ); } if (state is ProfileLoading) { return const LoadingScreen(); } if (state is ProfileErrorState) { return Text(state.mesage); } return Container(); }, ); } return Container(); }), )); } }