import 'package:app_popup_menu/app_popup_menu.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter/src/widgets/placeholder.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_progress_hud/flutter_progress_hud.dart'; import 'package:fluttericon/font_awesome_icons.dart'; import 'package:unit2/bloc/profile/profile_bloc.dart'; import 'package:unit2/bloc/user/user_bloc.dart'; import 'package:unit2/model/profile/eligibility.dart'; import 'package:unit2/screens/profile/components/eligibility/edit_modal.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 'package:unit2/widgets/add_leading.dart'; import 'package:unit2/widgets/empty_data.dart'; import '../../../utils/alerts.dart'; class EligibiltyScreen extends StatelessWidget { const EligibiltyScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text(elibilityScreenTitle), centerTitle: true, backgroundColor: primary, actions: [AddLeading(onPressed: () {})], ), body: BlocBuilder( builder: (context, state) { if (state is UserLoggedIn) { return ProgressHUD( child: BlocConsumer( listener: (context, state) { if(state is ProfileLoading){ final progress = ProgressHUD.of(context); progress!.showWithText("Loading"); } if (state is EditNotOverseasEligibilityState) { final progress = ProgressHUD.of(context); progress!.dismiss(); }if (state is EditOverseasEligibilityState) { final progress = ProgressHUD.of(context); progress!.dismiss(); }if(state is EligibilityLoaded){ final progress = ProgressHUD.of(context); progress!.dismiss(); } // TODO: implement listener }, builder: (context, state) { return BlocBuilder( builder: (context, state) { if (state is EligibilityLoaded) { return ListView.builder( padding: const EdgeInsets.symmetric( vertical: 8, horizontal: 10), itemCount: state.eligibilities.length, itemBuilder: (BuildContext context, int index) { String title = state .eligibilities[index].eligibility!.title!; return Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: screenWidth, padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8), decoration: box1(), child: Row( children: [ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: Theme.of(context) .textTheme .titleMedium! .copyWith( fontWeight: FontWeight .w500), ), const Divider(), const SizedBox( height: 5, ), Text( "$licenseNumber: ${state.eligibilities[index].licenseNumber == null ? 'N/A' : state.eligibilities[index].licenseNumber.toString()}", style: Theme.of(context) .textTheme .titleSmall), const SizedBox( height: 3, ), Text( "Rating : ${state.eligibilities[index].rating}.", style: Theme.of(context) .textTheme .titleSmall) ]), ), AppPopupMenu( offset: const Offset(-10, -10), elevation: 3, onSelected: (value) { if (value == 2) { confirmAlert( context, () => null, "Delete?", "Confirm Delete?"); } if (value == 1) { EligibityCert eligibityCert = state.eligibilities[index]; bool overseas = eligibityCert .examAddress! .country! .id .toString() == '175' ? false : true; eligibityCert.overseas = overseas; final progress = ProgressHUD.of(context); eligibityCert.overseas = overseas; progress! .showWithText("Loading..."); if (eligibityCert.overseas!) { context.read().add( EditEligibilityOverseas( eligibityCert: eligibityCert)); } else { context.read().add( EditEligibilityNotOverseas( eligibityCert: eligibityCert)); } } }, menuItems: [ popMenuItem( text: "Edit", value: 1, icon: Icons.edit), popMenuItem( text: "Delete", value: 2, icon: Icons.delete), popMenuItem( text: "Attachment", value: 3, icon: FontAwesome.attach) ], icon: const Icon( Icons.more_vert, color: Colors.grey, ), tooltip: "Options", ) ], ), ), const SizedBox( height: 5, ) ], ); }); } if (state is EditNotOverseasEligibilityState) { return EditEligibilityScreen( eligibityCert: state.eligibityCert); }if(state is EditOverseasEligibilityState){ return EditEligibilityScreen( eligibityCert: state.eligibityCert); } return Container(); }, ); }, ), ); } return Container(); }, )); } PopupMenuItem popMenuItem({String? text, int? value, IconData? icon}) { return PopupMenuItem( value: value, child: Row( children: [ Icon( icon, ), const SizedBox( width: 10, ), Text( text!, ), ], ), ); } }