440 lines
19 KiB
Dart
440 lines
19 KiB
Dart
|
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<LandPropertyOwnerBloc>()
|
||
|
.add(DeleteLandPropertyOwner(id: itemId));
|
||
|
}
|
||
|
|
||
|
void triggerLoadBldgFaas() {
|
||
|
final myBloc = BlocProvider.of<CrudBloc>(context);
|
||
|
myBloc.add(FetchTodos());
|
||
|
}
|
||
|
|
||
|
void triggerLoadLandFaas() {
|
||
|
final myBloc = BlocProvider.of<LandPropertyOwnerBloc>(context);
|
||
|
myBloc.add(LoadLandPropertyOwner());
|
||
|
}
|
||
|
|
||
|
return Scaffold(
|
||
|
body: BlocBuilder<LandPropertyOwnerBloc, LandPropertyOwnerState>(
|
||
|
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: <LandAppr>[])),
|
||
|
),
|
||
|
BlocProvider(
|
||
|
create: (context) => LandPropertyBoundariesBloc()
|
||
|
..add(FetchSingleLandPropertyBoundaries(
|
||
|
id: landPropertyOwner.id!)),
|
||
|
),
|
||
|
BlocProvider(
|
||
|
create: (context) => OtherImprovementsBloc()
|
||
|
..add(LoadOtherImprovementsEdit(
|
||
|
otherImprovements: <OtherImprovements>[],
|
||
|
id: landPropertyOwner.id)),
|
||
|
),
|
||
|
BlocProvider(
|
||
|
create: (context) => ValueAdjustmentBloc()
|
||
|
..add(LoadValueAdjustmentEdit(
|
||
|
valueAdjustment: <ValueAdjustments>[],
|
||
|
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: <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,
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
}
|