1import 'package:aidra_drive/core/router/routes.dart';
2import 'package:aidra_drive/core/ui/widgets/custom_scaffold.dart';
3import 'package:easy_localization/easy_localization.dart';
4import 'package:flutter/material.dart';
5import 'package:flutter_bloc/flutter_bloc.dart';
6import 'package:flutter_screenutil/flutter_screenutil.dart';
7import 'package:go_router/go_router.dart';
9import '../../../../../core/common/entities/collection_entity.dart';
10import '../../../../../core/common/models/confirmation_param_model.dart';
12import '../../../../../core/ui/theme/color_palette.dart';
13import '../../../../../core/ui/widgets/custom_slider.dart';
14import '../../../../../core/ui/widgets/custom_snackbar.dart';
15import '../../../../auth/presentation/bloc/authentication_bloc/authentication_bloc.dart';
16import '../../bloc/collections_information_bloc/collections_information_bloc.dart';
17import 'widgets/barcodes_scan.dart';
18import '../widgets/collection_request_details_header.dart';
19import 'widgets/details_card/details_card.dart';
20import 'widgets/note_field.dart';
23 final GoRouterState state;
31 State<CollectionRequestInformationScreen>
createState() => _CollectionRequestInformationScreenState();
34class _CollectionRequestInformationScreenState
extends State<CollectionRequestInformationScreen> {
50 Widget
build(BuildContext context) {
55 onPopInvokedWithResult: (didPop,
_) {
57 ScaffoldMessenger.of(context).showSnackBar(
59 content:
Text(
'You cannot go back'),
61 duration: Duration(seconds: 2),
65 child: BlocListener<CollectionsInformationBloc, CollectionsInformationState>(
66 listenWhen: (previous, current) => current is CollectionsInformationLoading || current is
CollectionsInformationLoaded || current is CollectionsInformationError,
67 listener: (context, state) {
68 if (state is CollectionsInformationError) {
74 Routes.collectionRequestConfirmationScreen.route,
77 resCollectionInformationEntity: state.confirmation
80 }
else if (state is CollectionsInformationLoading) {
84 child: CustomScaffold(
86 title:
'information.title'.tr(),
87 isLeadingVisible:
false,
89 body: SingleChildScrollView(
92 CollectionRequestDetailsHeader(
93 margin: EdgeInsets.all(16.sp),
102 onVolumeCollectedChanged: (value) {
103 _currentVolumeCollected = double.parse(value);
107 onScannedValuesChanged: (recoveredCodes, depositedCodes) {
118 padding: EdgeInsets.all(16.sp),
121 action: (controller) {
132 final authState = context.read<AuthenticationBloc>().state;
133 if (authState is AuthenticatedState) {
134 context.read<CollectionsInformationBloc>().add(
135 SendCollectionInformationEvent(
136 id: collection.id.toString(),
137 collectionRequest:
'manual',
138 volumeDeclared: collection.volume.toString(),
139 volumeCollected: _currentVolumeCollected.toString(),
140 recoveredDrum: _recoveredDrums,
141 depositedDrum: _depositedDrums,
142 userId: authState.session.uid.toString(),
143 reference: collection.reference ??
'',
144 address: collection.address ??
'',
145 restaurant: collection.restaurant ??
'',
146 restaurantId: collection.restaurantId ?? 0,
override void initState()
class App extends StatefulWidget build(BuildContext context)
static const antiFlashWhite
static ScaffoldFeatureController< SnackBar, SnackBarClosedReason > display(final BuildContext context, final Color color, final String message,)
CollectionEntity _collectionEntity
class SearchWeeklyCollectionsEvent extends WeeklyCollectionsEvent collection
style Text( '${ 'scheduling.reference'.tr()}:${collection.internalCode}', style:Theme.of(context).textTheme.bodySmall,)
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,),),),],)