1import 'package:flutter/material.dart';
2import 'package:flutter_screenutil/flutter_screenutil.dart';
4import '../../../../core/UI/widgets/custom_scaffold.dart';
5import '../../../../core/UI/theme/color_palette.dart';
6import '../../models/driver_request.dart';
7import 'widgets/request_header.dart';
8import 'widgets/route_info_card.dart';
9import 'widgets/station_card.dart';
10import 'widgets/action_buttons.dart';
11import 'widgets/confirmation_dialogs.dart';
12import '../stations_map_view/stations_map_view.dart';
19 required this.request,
23 State<RequestDetailsScreen>
createState() => _RequestDetailsScreenState();
26class _RequestDetailsScreenState
extends State<RequestDetailsScreen> {
28 Widget
build(BuildContext context) {
29 return CustomScaffold(
30 title:
'Request Details',
44 fontWeight: FontWeight.w600,
51 builder: (context) => StationsMapViewScreen(
52 stations: widget.request.stations,
66 SingleChildScrollView(
69 crossAxisAlignment: CrossAxisAlignment.start,
71 RequestHeader(
request: widget.request),
73 RouteInfoCard(
request: widget.request),
96 decoration: BoxDecoration(
98 borderRadius: BorderRadius.circular(12.r),
101 color: Colors.grey.withValues(alpha: 0.1),
103 offset:
const Offset(0, 2),
108 crossAxisAlignment: CrossAxisAlignment.start,
111 'Oil Stations (${widget.request.stations.length})',
114 fontWeight: FontWeight.bold,
119 ...widget.request.stations
120 .map((station) => StationCard(station: station)),
135 ScaffoldMessenger.of(context).showSnackBar(
146 'Request accepted successfully!',
147 style: TextStyle(fontSize: 14.sp),
152 duration:
const Duration(seconds: 3),
153 behavior: SnackBarBehavior.floating,
154 shape: RoundedRectangleBorder(
155 borderRadius: BorderRadius.circular(8.r),
159 Future.delayed(
const Duration(seconds: 2), () {
161 Navigator.of(context).pop();
167 ScaffoldMessenger.of(context).showSnackBar(
179 style: TextStyle(fontSize: 14.sp),
183 backgroundColor: Colors.red,
184 duration:
const Duration(seconds: 3),
185 behavior: SnackBarBehavior.floating,
186 shape: RoundedRectangleBorder(
187 borderRadius: BorderRadius.circular(8.r),
191 Future.delayed(
const Duration(seconds: 2), () {
193 Navigator.of(context).pop();
class App extends StatefulWidget build(BuildContext context)
static const antiFlashWhite
static void showDeclineDialog(BuildContext context, VoidCallback onConfirm)
static void showAcceptDialog(BuildContext context, VoidCallback onConfirm)
abstract class CollectionsToScheduleEvent extends Equatable request
Widget _buildBody(ElearningV2State state)
DriverRequest({ required this.id, required this.driverName, required this.creationDate, required this.stations, required this.startPoint, required this.endPoint, })
void _handleDeclineRequest()
void _showDeclineDialog()
void _handleAcceptRequest()
Widget _buildStationsList()
const RequestDetailsScreen({ super.key, required this.request, })
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,),),),],)