1import '../../data/driver_requests_repository.dart';
2import 'widgets/request_card.dart';
3import '../request_details/request_details.dart';
4import 'package:flutter/material.dart';
5import 'package:flutter_screenutil/flutter_screenutil.dart';
6import 'package:flutter_bloc/flutter_bloc.dart';
8import '../../../../core/UI/widgets/custom_scaffold.dart';
9import '../../../../core/UI/theme/color_palette.dart';
10import '../../../../features/auth/presentation/bloc/authentication_bloc/authentication_bloc.dart';
11import '../../models/driver_request.dart';
17 State<DriverRequestsScreen>
createState() => _DriverRequestsScreenState();
20class _DriverRequestsScreenState
extends State<DriverRequestsScreen> {
46 _error =
'Failed to load requests: $e';
53 final confirm = await showDialog<bool>(
55 builder: (context) => AlertDialog(
57 content:
const Text(
'Are you sure you want to sign out?'),
60 onPressed: () => Navigator.of(context).pop(
false),
64 onPressed: () => Navigator.of(context).pop(
true),
71 if (confirm ==
true && mounted) {
72 context.read<AuthenticationBloc>().add(SignOutEvent());
77 Widget
build(BuildContext context) {
78 return CustomScaffold(
79 title:
'Driver Requests',
80 isLeadingVisible:
false,
85 icon:
const Icon(Icons.logout),
96 child: CircularProgressIndicator(),
103 mainAxisAlignment: MainAxisAlignment.center,
117 textAlign: TextAlign.center,
130 padding: EdgeInsets.all(16.sp),
132 crossAxisAlignment: CrossAxisAlignment.start,
146 crossAxisAlignment: CrossAxisAlignment.start,
152 fontWeight: FontWeight.bold,
158 '${_requests.length} requests found',
172 mainAxisAlignment: MainAxisAlignment.center,
175 Icons.inbox_outlined,
192 return ListView.separated(
194 separatorBuilder: (context, index) =>
SizedBox(height: 16.h),
195 itemBuilder: (context, index) {
196 return AnimatedContainer(
197 duration: Duration(milliseconds: 300 + (index * 100)),
198 curve: Curves.easeOutCubic,
override void initState()
class App extends StatefulWidget build(BuildContext context)
static const antiFlashWhite
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, })
class DriverRequestsScreen extends StatefulWidget _requests
void _handleViewMore(DriverRequest request)
Widget _buildRequestsList()
Future< void > _loadRequests() async
Future< void > _showSignOutDialog() async
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,),),),],)