1import 'package:easy_localization/easy_localization.dart';
2import 'package:flutter/material.dart';
3import 'package:flutter_bloc/flutter_bloc.dart';
4import 'package:go_router/go_router.dart';
6import '../../../../../../core/common/entities/collection_entity.dart';
7import '../../../../../../core/common/enums/collection_status.dart';
8import '../../../../../../core/router/routes.dart';
9import '../../../../../../core/services/location_service.dart';
10import '../../../../../../core/services/notifications_service.dart';
11import '../../../../../../core/ui/theme/color_palette.dart';
12import '../../../../../../core/ui/widgets/custom_dual_slider.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_bloc/collections_bloc.dart';
17import 'cancellation_bottom_sheet.dart';
18import 'confirmation_dialog.dart';
26 required this.collection,
28 required this.collectionId,
33 Widget
build(BuildContext context) {
42 endText:
" > > ${'common.collect'.tr()}",
44 endAction: (sliderController) {
45 sliderController.loading();
47 context.read<CollectionsBloc>().stream.listen(
49 if (state is CollectionValidationSuccess) {
50 if (context.mounted) {
51 context.push(Routes.collectionRequestInformationScreen.route, extra: collection);
52 sliderController.reset();
54 }
else if (
state is CollectionValidationError) {
56 sliderController.reset();
63 text: _getSliderText(),
64 action: (
_) => changeCollectionStatus(
70 cancellationReasonId: null,
71 cancellationReasonName: null,
82 required BuildContext context,
84 required
String? cancellationReasonId,
85 required
String? cancellationReasonName,
88 final authState = context.read<AuthenticationBloc>().state;
90 if (authState is AuthenticatedState) {
91 userId = authState.session.uid;
99 context.read<CollectionsBloc>().add(
100 UpdateCollectionStatusEvent(
101 cancellationReasonId: cancellationReasonId,
115 showModalBottomSheet(
116 context: parentContext,
120 onReasonSelected: (reasonId) async {
121 Navigator.pop(context);
127 context: parentContext,
129 if (confirmed ==
true && parentContext.mounted) {
133 context: parentContext,
135 cancellationReasonId: reasonId.toString(),
136 cancellationReasonName: null,
147 final authState = context.read<AuthenticationBloc>().
state;
148 if (authState is AuthenticatedState) {
149 context.read<CollectionsBloc>().add(
152 userId: authState.session.uid.toString(),
const CancellationBottomSheet({ super.key, required this.collectionId, required this.onReasonSelected, })
sealed class CheckInOutEvent extends Equatable userId
static ScaffoldFeatureController< SnackBar, SnackBarClosedReason > display(final BuildContext context, final Color color, final String message,)
void updateDeliveryContext({int? poId, String? poStatus})
Future< void > sendBusinessNotification({ required String partnerId, required status, }) async
class UpdateCollectionStatusEvent extends CollectionsEvent collectionId
const ValidateCollectionEvent({ required this.collectionId, required this.userId })
Future< bool?> showConfirmationDialog({ required BuildContext context, String title='Confirm Cancellation', String message='Are you sure you want to cancel this collection?', })
class GetCollectionsParams extends Equatable CollectionEntity
class SearchWeeklyCollectionsEvent extends WeeklyCollectionsEvent collection
style SizedBox(height:2.h)