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: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/profile/profile_bloc.dart'; import 'package:unit2/screens/profile/components/basic_information/contact_information.dart'; import 'package:unit2/screens/profile/components/basic_information/primary_information.dart'; import 'package:unit2/screens/profile/components/loading_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 { @override Widget build(BuildContext context) { return SafeArea( child: Scaffold( appBar: AppBar( backgroundColor: primary, centerTitle: true, title: const Text('Profile'), ), body: ProgressHUD( child: BlocBuilder(builder: (context, state) { if (state is UserLoggedIn) { return BlocConsumer( listener: (context, state) { if (state is ProfileLoading) { final progress = ProgressHUD.of(context); progress?.showWithText( 'Loading Profile', ); } if (state is ProfileLoaded) { 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: [ const Text( "View and Update your Profile Information"), 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",(){}), subMenu( Icons.contact_mail, "Identifications",(){}), subMenu( Icons.contact_phone, "Contact Info",(){ Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){ return ContactInformation(contacts: state.profileInformation.basicInfo.contactInformation,); })); }), subMenu(Icons.flag, "Citizenships",(){}), ]), const Divider(), const MainMenu( icon: Elusive.group, title: "Family", ), const Divider(), const MainMenu( icon: FontAwesome5.graduation_cap, title: "Education", ), const Divider(), const MainMenu( icon: Icons.stars, title: "Eligibility", ), const Divider(), const MainMenu( icon: FontAwesome5.shopping_bag, title: "Work History", ), const Divider(), const MainMenu( icon: FontAwesome5.walking, title: "Voluntary Work & Civic Services", ), const Divider(), const MainMenu( icon: Elusive.lightbulb, title: "Learning & Development", ), const Divider(), const MainMenu( icon: Brandico.codepen, title: "Personal 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",(){}), subMenu(FontAwesome5.certificate, "Organization Memberships",(){}), subMenu(Entypo.doc_text, "Non-Academic Recognitions",(){}), ]), 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(); } return Container(); }, ); } return Container(); }), ))); } }