import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:unit2/bloc/offline/offline_passo/admin/trees_improvements/trees_improvements_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/admin/type_of_location/type_of_location_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/admin/type_of_road/type_of_road_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/land_property_appraisal/land_property_appraisal_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/land_property_assessment/land_property_assessment_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/land_property_boundaries/land_property_boundaries_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/land_property_location/land_property_location_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/land_property_owner_bloc/land_property_owner_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/land_property_signture/land_property_signature_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/other_improvements/other_improvements_bloc.dart'; import 'package:unit2/bloc/offline/offline_passo/land/value_adjustment/value_adjustment_bloc.dart'; import 'package:unit2/model/offline/offline_profile.dart'; import 'package:unit2/model/passo/land_appr.dart'; import 'package:unit2/model/passo/land_property_assessment.dart'; import 'package:unit2/model/passo/land_property_owner.dart'; import 'package:unit2/model/passo/land_value_adjustment.dart'; import 'package:unit2/model/passo/other_improvements.dart'; import 'package:unit2/screens/offline/passo/building/add/add_building.dart'; import 'package:unit2/screens/offline/passo/land/add/add_land.dart'; import 'package:unit2/screens/offline/passo/land/edit/edit_land.dart'; import '../../../bloc/offline/offline_passo/admin/barangay_admin/barangay_admin_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/class_components_admin.dart/class_components_admin_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/land_classification/land_classification_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/land_subclassification/land_subclassification_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/memoranda/memoranda_admin_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/municipalities_admin/municipalities_admin_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/signatories/signatories_admin_bloc.dart'; import '../../../bloc/offline/offline_passo/admin/unit_construction/unit_construction_admin_bloc.dart'; import '../../../bloc/offline/offline_passo/building/additional_items_offline/additional_items_offline_bloc.dart'; import '../../../bloc/offline/offline_passo/building/appraisal_offline/bldg_appraisal_offline_bloc.dart'; import '../../../bloc/offline/offline_passo/building/assessment_offline/bldg_assessment_offline_bloc.dart'; import '../../../bloc/offline/offline_passo/building/general_description/general_description_bloc.dart'; import '../../../bloc/offline/offline_passo/building/landref/landref_location_bloc.dart'; import '../../../bloc/offline/offline_passo/building/location/location_bloc.dart'; import '../../../bloc/offline/offline_passo/building/owner_info_bloc/crud_bloc.dart'; import '../../../bloc/offline/offline_passo/building/structural_materials_offline.dart/structural_material_offline_bloc.dart'; import '../../../theme-data.dart/colors.dart'; import '../../../utils/alerts.dart'; import '../../../widgets/empty_data.dart'; class LandHomeOffline extends StatelessWidget { final OfflineProfile offlineProfile; const LandHomeOffline(this.offlineProfile, {super.key}); @override Widget build(BuildContext context) { void deleteItem(int itemId) { context .read() .add(DeleteLandPropertyOwner(id: itemId)); } void triggerLoadBldgFaas() { final myBloc = BlocProvider.of(context); myBloc.add(FetchTodos()); } void triggerLoadLandFaas() { final myBloc = BlocProvider.of(context); myBloc.add(LoadLandPropertyOwner()); } return Scaffold( body: BlocBuilder( builder: (context, state) { if (state is LandPropertyOwnerLoaded) { if (state.landPropertyOwner.isNotEmpty) { return Container( padding: const EdgeInsets.symmetric(horizontal: 12), child: Column( children: [ Expanded( child: ListView.builder( shrinkWrap: true, itemCount: state.landPropertyOwner.length, itemBuilder: (BuildContext context, int index) { return _listCard( state.landPropertyOwner[index], context, index, deleteItem, state.landPropertyOwner.length); }, ), ), ], ), ); } else { return const EmptyData( message: "You don't have any building faas added. Please click + to add"); } } return Container(); }, ), floatingActionButton: SpeedDial( //provide here features of your parent FAB icon: Icons.add, backgroundColor: primary, heroTag: null, useRotationAnimation: true, activeIcon: Icons.close, animationCurve: Curves.elasticInOut, children: [ SpeedDialChild( child: const Icon( Icons.maps_home_work_rounded, color: primary, ), label: 'Building & Other Structure', onTap: () { Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { return MultiBlocProvider(providers: [ BlocProvider( create: (context) => CrudBloc(), ), BlocProvider( create: (context) => AdditionalItemsOfflineBloc(), ), BlocProvider( create: (context) => MunicipalitiesAdminBloc() ..add(const LoadMunicipalities()), ), BlocProvider( create: (context) => BarangayAdminBloc() ..add( const LoadBarangayInMunicipality(cityCode: '01')), ), BlocProvider( create: (context) => ClassComponentsAdminBloc() ..add(const LoadClassComponents()), ), BlocProvider( create: (context) => UnitConstructionAdminBloc() ..add(const LoadUnitConstruct()), ), BlocProvider( create: (context) => SignatoriesAdminBloc() ..add(const LoadSignatories()), ), BlocProvider( create: (context) => MemorandaAdminBloc()..add(const LoadMemoranda()), ), BlocProvider(create: (context) => LandrefLocationBloc()), BlocProvider(create: (context) => LocationBloc()), BlocProvider( create: (context) => GeneralDescriptionBloc()), BlocProvider( create: (context) => StructuralMaterialOfflineBloc()), BlocProvider( create: (context) => AdditionalItemsOfflineBloc() ..add(const LoadAdditionalItems())), BlocProvider( create: (context) => BldgAppraisalOfflineBloc()), BlocProvider( create: (context) => BldgAssessmentOfflineBloc()), ], child: AddBuilding(triggerLoadBldgFaas, offlineProfile)); })); }), SpeedDialChild( child: const Icon( Icons.forest_rounded, color: primary, ), label: 'Land/Other Improvements', onTap: () { Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { return MultiBlocProvider(providers: [ BlocProvider( create: (context) => LandPropertyOwnerBloc(), ), BlocProvider( create: (context) => LandPropertyAppraisalBloc() ..add(const LoadLandPropertyAppraisal()), ), BlocProvider( create: (context) => LandClassificationBloc() ..add(const LoadLandClassification()), ), BlocProvider( create: (context) => LandSubclassificationBloc() ..add(const LoadLandSubClassification()), ), BlocProvider( create: (context) => MunicipalitiesAdminBloc() ..add(const LoadMunicipalities()), ), BlocProvider( create: (context) => OtherImprovementsBloc() ..add(const LoadOtherImprovements()), ), BlocProvider( create: (context) => TreesImprovementsBloc() ..add(const LoadTreesImprovements()), ), BlocProvider( create: (context) => ValueAdjustmentBloc() ..add(const LoadValueAdjustment()), ), BlocProvider( create: (context) => TypeOfRoadBloc()..add(const LoadTypeOfRoad()), ), BlocProvider( create: (context) => TypeOfLocationBloc()..add(const LoadTypeOfLocation()), ), BlocProvider( create: (context) => LandPropertyAssessmentBloc() ..add(const LoadLandPropertyAssessment()), ), BlocProvider( create: (context) => LandPropertySignatureBloc()), BlocProvider( create: (context) => SignatoriesAdminBloc()..add(const LoadSignatories()), ), BlocProvider( create: (context) => MemorandaAdminBloc()..add(const LoadMemoranda()), ), BlocProvider( create: (context) => LandPropertyLocationBloc(), ), BlocProvider( create: (context) => LandPropertyBoundariesBloc(), ), BlocProvider( create: (context) => TreesImprovementsBloc() ..add(const LoadTreesImprovements()), ), ], child: AddLandOffline(triggerLoadLandFaas)); })); }, ), SpeedDialChild( child: const Icon( Icons.precision_manufacturing_rounded, color: primary, ), label: 'Machinery', onTap: () {}, ), // SpeedDialChild(a // child: const Icon( // Icons.report_problem_rounded, // color: primary, // ), // label: 'Testing Screen', // onTap: () { // Navigator.of(context) // .push(MaterialPageRoute(builder: (ctx) => Multi_Select())); // }, // ), ]), ); } } Card _listCard(LandPropertyOwner landPropertyOwner, context, index, deleteItem, bldgLength) { return Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), //set border radius more than 50% of height and width to make circle ), margin: const EdgeInsets.all(5.0), elevation: 5, shadowColor: Colors.grey, child: Padding( padding: const EdgeInsets.all(15.0), child: InkWell( onTap: () async { Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { return MultiBlocProvider( providers: [ BlocProvider( create: (context) => LandPropertyOwnerBloc()..add(LoadLandPropertyOwner()), ), BlocProvider( create: (context) => LandPropertyLocationBloc() ..add(FetchSingleLandPropertyLocation( id: landPropertyOwner.id!)), ), BlocProvider( create: (context) => LandPropertyBoundariesBloc() ..add(FetchSingleLandPropertyBoundaries( id: landPropertyOwner.id!)), ), BlocProvider( create: (context) => LandPropertyAppraisalBloc() ..add(LoadLandPropertyAppraisalEdit( id: landPropertyOwner.id!, landAppr: [])), ), BlocProvider( create: (context) => LandPropertyBoundariesBloc() ..add(FetchSingleLandPropertyBoundaries( id: landPropertyOwner.id!)), ), BlocProvider( create: (context) => OtherImprovementsBloc() ..add(LoadOtherImprovementsEdit( otherImprovements: [], id: landPropertyOwner.id)), ), BlocProvider( create: (context) => ValueAdjustmentBloc() ..add(LoadValueAdjustmentEdit( valueAdjustment: [], id: landPropertyOwner.id)), ), BlocProvider( create: (context) => TypeOfRoadBloc()..add(const LoadTypeOfRoad()), ), BlocProvider( create: (context) => LandClassificationBloc() ..add(const LoadLandClassification()), ), BlocProvider( create: (context) => MunicipalitiesAdminBloc() ..add(const LoadMunicipalities()), ), BlocProvider( create: (context) => LandSubclassificationBloc() ..add(const LoadLandSubClassification()), ), BlocProvider( create: (context) => LandPropertyAssessmentBloc() ..add(LoadLandPropertyAssessmentEdit( landPropertyAssessment: [], id: landPropertyOwner.id)), ), BlocProvider( create: (context) => LandPropertySignatureBloc() ..add(LoadSpecificLandPropertySignatureInfo( id: landPropertyOwner.id!)), ), BlocProvider( create: (context) => SignatoriesAdminBloc()..add(const LoadSignatories()), ), BlocProvider( create: (context) => MemorandaAdminBloc()..add(const LoadMemoranda()), ), BlocProvider( create: (context) => TreesImprovementsBloc() ..add(const LoadTreesImprovements()), ), BlocProvider( create: (context) => TypeOfRoadBloc()..add(const LoadTypeOfRoad()), ), BlocProvider( create: (context) => TypeOfLocationBloc()..add(const LoadTypeOfLocation()), ), ], child: EditLandOffline( index: index, faas: landPropertyOwner, title: "Land FAAS", )); })); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40, // Adjust this to your desired size height: 40, // Adjust this to your desired size decoration: BoxDecoration( shape: BoxShape.circle, border: Border.all( color: primary, // Border color width: 1, // Border width ), ), child: const Icon( Icons.forest_rounded, color: primary, // Icon color ), ), const SizedBox( width: 20, ), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( '${landPropertyOwner.owner}', style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, ), textAlign: TextAlign.left, ), SizedBox(height: 5), Text( '${landPropertyOwner.tdn} - ${landPropertyOwner.id}', style: TextStyle( fontSize: 13, ), textAlign: TextAlign.left, ), ], ), ), IconButton( onPressed: () { confirmAlertWithCancel( context, () => deleteItem(landPropertyOwner.id), () => null, 'Delete FAAS Item?', "Are you sure you want to delete this item?"); }, icon: const Icon(Icons.delete_rounded), color: primary, ), ], ), ), ), ); }