fix : ui bug

This commit is contained in:
2025-09-22 16:21:17 +03:30
parent 0f4a1d8e56
commit e176671812
15 changed files with 308 additions and 196 deletions

View File

@@ -22,7 +22,7 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
filteringWidget: filterBottomSheet(),
onSearchChanged: (data) => controller.setSearchValue(data),
routesWidget: ObxValue((route) => buildPageRoute(route), controller.routesName),
routesWidget: ObxValue((route) => buildContainerPageRoute(route), controller.routesName),
onBackPressed: () => Get.back(id: poultryFirstKey),
widgets: [
segmentWidget(),
@@ -110,7 +110,8 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('نژاد:${ item.breed?.first.breed ?? 'N/A'}', style: AppFonts.yekan14.copyWith(color: AppColor.textColor)),
Text('نژاد:${ item.breed?.first.breed ?? 'N/A'}',
style: AppFonts.yekan14.copyWith(color: AppColor.textColor)),
Text(
' سن ${item.age} (روزه)',
@@ -131,8 +132,9 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
unit: '(قطعه)',
),
buildUnitRow(title: 'مانده در سالن', value: item.leftOver.separatedByCommaFa,unit: '(قطعه)',),
buildUnitRow(title: 'تلفات', value: item.losses.separatedByCommaFa,unit: '(قطعه)',),
buildUnitRow(
title: 'مانده در سالن', value: item.leftOver.separatedByCommaFa, unit: '(قطعه)',),
buildUnitRow(title: 'تلفات', value: item.losses.separatedByCommaFa, unit: '(قطعه)',),
buildRow(
title: 'دامپزشک فارم',
value: '${item.vetFarm?.vetFarmFullName}(${item.vetFarm?.vetFarmMobile})',
@@ -171,94 +173,99 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
Get.bottomSheet(
isDismissible: false,
isScrollControlled: false,
BaseBottomSheet(
height: 350.h,
child: Column(
children: [
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
mainAxisSpacing: 8,
crossAxisSpacing: 8,
childAspectRatio: 1,
),
shrinkWrap: true,
itemCount: 7,
itemBuilder: (context, index) {
return ObxValue((data) {
if (index + 1 > data.length) {
return GestureDetector(
onTap: () async {
await controller.pickImages();
},
child: Container(
ObxValue((data) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
mainAxisSpacing: 8,
crossAxisSpacing: 8,
childAspectRatio: 1,
),
shrinkWrap: true,
itemCount: controller.pickedImages.length + 1,
itemBuilder: (context, index) {
if (index + 1 < 7&& index == data.length) {
return GestureDetector(
onTap: () async {
await controller.pickImages();
},
child: Container(
width: 80.h,
height: 80.h,
decoration: BoxDecoration(
color: AppColor.lightGreyNormal,
borderRadius: BorderRadius.circular(8.r),
),
child: Center(
child: Icon(
Icons.add_a_photo,
color: AppColor.lightGreyDarker,
size: 32.h,
),
),
),
);
} else {
return Container(
width: 80.h,
height: 80.h,
decoration: BoxDecoration(
color: AppColor.lightGreyNormal,
borderRadius: BorderRadius.circular(8.r),
),
child: Center(
child: Icon(
Icons.camera_alt,
color: AppColor.lightGreyDarker,
size: 32.h,
),
),
),
);
} else {
return Container(
width: 80.h,
height: 80.h,
decoration: BoxDecoration(
color: AppColor.lightGreyNormal,
borderRadius: BorderRadius.circular(8.r),
),
child: Stack(
children: [
Positioned.fill(
child: Image.file(File(data[index].path), fit: BoxFit.cover),
),
child: Stack(
children: [
Positioned.fill(
child: Image.file(File(data[index].path), fit: BoxFit.cover),
),
Positioned(
top: 4,
left: 4,
child: GestureDetector(
onTap: () {
controller.removeImage(index);
},
child: Container(
width: 24.w,
height: 24.h,
clipBehavior: Clip.antiAlias,
padding: EdgeInsets.all(4),
decoration: ShapeDecoration(
color: Colors.white.withValues(alpha: 0.80),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4),
Positioned(
top: 4,
left: 4,
child: GestureDetector(
onTap: () {
controller.removeImage(index);
},
child: Container(
width: 24.w,
height: 24.h,
clipBehavior: Clip.antiAlias,
padding: EdgeInsets.all(4),
decoration: ShapeDecoration(
color: Colors.white.withValues(alpha: 0.80),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4),
),
),
),
child: Assets.vec.trashSvg.svg(
width: 8.w,
height: 8.h,
colorFilter: ColorFilter.mode(
AppColor.redNormal,
BlendMode.srcIn,
child: Assets.vec.trashSvg.svg(
width: 8.w,
height: 8.h,
colorFilter: ColorFilter.mode(
AppColor.redNormal,
BlendMode.srcIn,
),
),
),
),
),
),
],
),
);
}
}, controller.pickedImages);
},
),
],
),
);
}
}, );
SizedBox(height: 20),
},controller.pickedImages),
SizedBox(height: 35.h),
Text(
'حداقل ۲ تصویر برای ثبت بازرسی لازم است',
style: AppFonts.yekan12.copyWith(color: AppColor.textColor),
),
SizedBox(height: 8.h),
Row(
spacing: 16,
mainAxisAlignment: MainAxisAlignment.center,
@@ -292,10 +299,13 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
}, controller.isOnUpload),
],
),
SizedBox(height: 8.h),
],
),
),
);
).whenComplete(() {
controller.pickedImages.clear();
},);
}
Padding segmentWidget() {
@@ -402,8 +412,6 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
),
],
),
Text(
@@ -420,21 +428,23 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
buildRow(title: 'شماره مجوز جوجه ریزی', value: item.hatching?.licenceNumber ?? 'N/A'),
buildUnitRow(
title: 'حجم جوجه ریزی',
value: item.hatching?.quantity.separatedByCommaFa ?? 'N/A',
title: 'حجم جوجه ریزی',
value: item.hatching?.quantity.separatedByCommaFa ?? 'N/A',
unit: '(قطعه)'
),
buildUnitRow(
title: 'مانده در سالن',
value: item.hatching?.leftOver.separatedByCommaFa ?? 'N/A',
unit: '(قطعه)'
),
buildUnitRow(title: 'تلفات', value: item.hatching?.losses.separatedByCommaFa ?? 'N/A', unit: '(قطعه)'),
buildUnitRow(
title: 'مانده در سالن',
value: item.hatching?.leftOver.separatedByCommaFa ?? 'N/A',
unit: '(قطعه)'
),
buildUnitRow(title: 'تلفات',
value: item.hatching?.losses.separatedByCommaFa ?? 'N/A',
unit: '(قطعه)'),
buildRow(
title: 'دامپزشک فارم',
value:
'${item.hatching?.vetFarm?.vetFarmFullname}(${item.hatching?.vetFarm?.vetFarmMobile})',
'${item.hatching?.vetFarm?.vetFarmFullname}(${item.hatching?.vetFarm?.vetFarmMobile})',
),
buildRow(
title: 'شرح بازرسی',
@@ -446,11 +456,13 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
if (item.state == 'accepted') ...{
Visibility(
visible: item.realQuantityAi != null,
child: buildRow(title: 'تعداد تاییده هوش مصنوعی', value: item.realQuantityAi.separatedByComma),
child: buildRow(
title: 'تعداد تاییده هوش مصنوعی', value: item.realQuantityAi.separatedByComma),
),
Visibility(
visible: item.realQuantity != null,
child: buildRow(title: 'تعداد تاییده', value: item.realQuantity.separatedByComma ?? '-'),
child: buildRow(
title: 'تعداد تاییده', value: item.realQuantity.separatedByComma ?? '-'),
),
},
@@ -494,17 +506,18 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
mainAxisSpacing: 10,
crossAxisSpacing: 10,
),
itemBuilder: (context, index) => Container(
height: 100.h,
clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.r),
image: DecorationImage(
image: NetworkImage(item.image?[index] ?? ''),
fit: BoxFit.cover,
itemBuilder: (context, index) =>
Container(
height: 100.h,
clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.r),
image: DecorationImage(
image: NetworkImage(item.image?[index] ?? ''),
fit: BoxFit.cover,
),
),
),
),
),
),
),
],