1import 'package:easy_localization/easy_localization.dart';
2import 'package:fluentui_system_icons/fluentui_system_icons.dart';
3import 'package:flutter/material.dart';
4import 'package:flutter_screenutil/flutter_screenutil.dart';
5import '../../../../../core/common/enums/collection_status.dart';
6import '../../../../../core/ui/theme/color_palette.dart';
7import '../../../../../core/ui/widgets/collection_badges/collection_status_badge.dart';
8import '../../../../../core/ui/widgets/collection_item/collection_info_row.dart';
9import '../../../domain/entities/unloading_collection_entity.dart';
19 required this.collection,
21 this.onCheckboxChanged,
22 required this.isSelected,
26 State<UnloadingCollectionItem>
createState() => _UnloadingCollectionItemState();
29class _UnloadingCollectionItemState
extends State<UnloadingCollectionItem> {
33 Widget
build(BuildContext context) {
35 margin: EdgeInsets.fromLTRB(16.sp, 8.sp, 16.sp, 8.sp),
36 decoration: BoxDecoration(
38 borderRadius: BorderRadius.circular(20),
43 offset:
const Offset(0, 5),
54 padding: EdgeInsets.only(right: 12.sp),
56 value: widget.isSelected,
57 onChanged: widget.onCheckboxChanged,
58 shape: RoundedRectangleBorder(
59 borderRadius: BorderRadius.circular(4),
61 side: BorderSide(width: 1.5,
color: Colors.grey[400]!),
66 crossAxisAlignment: CrossAxisAlignment.start,
69 widget.collection.restaurant ??
"--",
70 style: Theme.of(context).textTheme.titleMedium!.copyWith(
72 fontWeight: FontWeight.w500,
77 "${'unloading.collection_info.unloaded_on'.tr()} ${widget.collection.collectionDate?.toLocal().toString().split(' ')[0]}",
78 style: Theme.of(context).textTheme.titleSmall!.copyWith(
86 const CollectionStatusBadge(
92 Divider(height: 1.sp),
98 label:
'unloading.collection_info.address'.tr(),
99 value: widget.collection.address ??
"--",
100 icon: FluentIcons.location_12_regular,
104 label:
'unloading.collection_info.collected_quantity'.tr(),
106 icon: FluentIcons.drop_12_regular,
117 if (volume == null)
return "--";
118 double volumeValue = volume is
double ? volume :
double.tryParse(volume.toString()) ?? 0.0;
119 if (volumeValue > 999) {
120 return '${(volumeValue / 1000).toStringAsFixed(2)} MT';
122 return '$volumeValue KG';
class App extends StatefulWidget build(BuildContext context)
class UnloadingCollectionItem extends StatefulWidget isSelected
String formatVolume(dynamic volume)
style Text( '${ 'scheduling.reference'.tr()}:${collection.internalCode}', style:Theme.of(context).textTheme.bodySmall,)
style SizedBox(height:2.h)
style Column(crossAxisAlignment:CrossAxisAlignment.end, children:[Container(padding:EdgeInsets.symmetric(horizontal:8.w, vertical:4.h), decoration:BoxDecoration(color:ColorPalette.tiffanyBlue.withValues(alpha:0.1), borderRadius:BorderRadius.circular(12),), child:Text(collection.type ?? '', style:Theme.of(context).textTheme.bodySmall?.copyWith(color:ColorPalette.tiffanyBlue, fontWeight:FontWeight.bold,),),),],)