32 Widget
build(BuildContext context) {
34 decoration: BoxDecoration(
36 begin: Alignment.topLeft,
37 end: Alignment.bottomRight,
43 borderRadius: BorderRadius.circular(24),
48 offset:
const Offset(0, 10),
53 borderRadius: BorderRadius.circular(24),
54 child: BackdropFilter(
55 filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
57 padding:
const EdgeInsets.all(24),
58 decoration: BoxDecoration(
60 borderRadius: BorderRadius.circular(24),
63 crossAxisAlignment: CrossAxisAlignment.start,
66 mainAxisAlignment: MainAxisAlignment.spaceBetween,
69 crossAxisAlignment: CrossAxisAlignment.start,
72 "dashboard.today_collections".tr(),
73 style: Theme.of(context).textTheme.titleLarge?.copyWith(
75 fontWeight: FontWeight.bold,
80 padding:
const EdgeInsets.symmetric(
84 decoration: BoxDecoration(
86 borderRadius: BorderRadius.circular(12),
89 DateFormat(
'dd MMM yyyy').format(DateTime.now()),
90 style:
const TextStyle(
92 fontWeight: FontWeight.w600,
103 mainAxisAlignment: MainAxisAlignment.spaceBetween,
119 padding:
const EdgeInsets.all(16),
120 child: CircularPercentIndicator(
125 mainAxisAlignment: MainAxisAlignment.center,
128 "$completedPercentage%",
131 fontWeight: FontWeight.bold,
136 "dashboard.completed".tr(),
146 circularStrokeCap: CircularStrokeCap.round,
152 crossAxisAlignment: CrossAxisAlignment.start,
155 "dashboard.done".tr(),
158 FluentIcons.checkmark_circle_12_regular,
162 "dashboard.volume".tr(),
165 FluentIcons.drop_12_regular,
174 padding:
const EdgeInsets.all(16),
175 decoration: BoxDecoration(
177 borderRadius: BorderRadius.circular(16),
182 mainAxisAlignment: MainAxisAlignment.spaceBetween,
187 "dashboard.total".tr(),
197 "dashboard.canceled".tr(),
205 Icons.timer_outlined,
212 "dashboard.pending_collections".tr(),
222 fontWeight: FontWeight.bold,
246 if (
label ==
"Volume") {
250 if (
value.contains(
"KG")) {
251 numericValue =
double.parse(
value.replaceAll(
" KG",
""));
252 }
else if (
value.contains(
"MT")) {
253 numericValue =
double.parse(
value.replaceAll(
" MT",
"")) * 1000;
256 numericValue =
double.parse(
value);
260 if (numericValue >= 1000) {
262 value =
"${(numericValue / 1000).toStringAsFixed(2)} MT";
265 value =
"$numericValue KG";
269 if (!
value.contains(
"KG") && !
value.contains(
"MT")) {
276 padding:
const EdgeInsets.all(16),
277 decoration: BoxDecoration(
278 color: valueColor.withValues(alpha: 0.1),
279 borderRadius: BorderRadius.circular(16),
286 crossAxisAlignment: CrossAxisAlignment.start,
290 style:
const TextStyle(
299 fontWeight: FontWeight.bold,
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,),),),],)