1import 'package:flutter/material.dart';
2import 'package:flutter_screenutil/flutter_screenutil.dart';
4import '../../../../core/UI/widgets/custom_card.dart';
5import '../../../../core/UI/theme/color_palette.dart';
6import '../../../models/driver_request.dart';
14 required this.request,
15 required this.onViewMore,
22class _RequestCardState
extends State<RequestCard>
23 with TickerProviderStateMixin {
34 duration:
const Duration(milliseconds: 300),
38 duration:
const Duration(milliseconds: 150),
45 ).animate(CurvedAnimation(
47 curve: Curves.easeOutBack,
53 ).animate(CurvedAnimation(
55 curve: Curves.easeInOut,
69 Widget
build(BuildContext context) {
70 return AnimatedBuilder(
73 builder: (context,
child) {
74 return Transform.scale(
75 scale: _scaleAnimation.value * _tapScaleAnimation.value,
77 bgColor: ColorPalette.white,
79 color: Colors.transparent,
81 borderRadius: BorderRadius.circular(10),
86 decoration: BoxDecoration(
87 borderRadius: BorderRadius.circular(10),
97 crossAxisAlignment: CrossAxisAlignment.start,
119 Future.delayed(
const Duration(milliseconds: 150), () {
129 mainAxisAlignment: MainAxisAlignment.spaceBetween,
135 fontWeight: FontWeight.bold,
140 padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h),
141 decoration: BoxDecoration(
143 borderRadius: BorderRadius.circular(12.r),
146 mainAxisSize: MainAxisSize.min,
153 fontWeight: FontWeight.w500,
177 value: widget.request.driverName,
182 value:
' ${widget.request.numberOfStations} stations',
185 icon: Icons.calendar_today,
186 label:
'Created at:',
188 '${widget.request.creationDate.hour.toString().padLeft(2, '0
')}:${widget.request.creationDate.minute.toString().padLeft(2, '0
')}',
195 required IconData
icon,
200 mainAxisSize: MainAxisSize.min,
203 mainAxisSize: MainAxisSize.min,
210 fontWeight: FontWeight.w500,
217 fontWeight: FontWeight.w500,
220 overflow: TextOverflow.ellipsis,
override void initState()
class App extends StatefulWidget build(BuildContext context)
late AnimationController _animationController
late Animation< double > _scaleAnimation
DriverRequest({ required this.id, required this.driverName, required this.creationDate, required this.stations, required this.startPoint, required this.endPoint, })
late AnimationController _tapAnimationController
late Animation< double > _tapScaleAnimation
Widget _buildDetailRow({ required IconData icon, required String label, required String value, })
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,),),),],)