diff --git a/apps/mobile/packages/core/lib/src/routing/client/navigator.dart b/apps/mobile/packages/core/lib/src/routing/client/navigator.dart index 5c7b1ee7..5bcc3406 100644 --- a/apps/mobile/packages/core/lib/src/routing/client/navigator.dart +++ b/apps/mobile/packages/core/lib/src/routing/client/navigator.dart @@ -175,8 +175,9 @@ extension ClientNavigator on IModularNavigator { /// Navigates to the order details page to a specific date. void toOrdersSpecificDate(DateTime date) { - navigate( + pushNamedAndRemoveUntil( ClientPaths.orders, + (_) => false, arguments: {'initialDate': date}, ); } diff --git a/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/pages/view_orders_page.dart b/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/pages/view_orders_page.dart index d2f972e8..5a1ac589 100644 --- a/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/pages/view_orders_page.dart +++ b/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/pages/view_orders_page.dart @@ -27,8 +27,8 @@ class ViewOrdersPage extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocProvider( - create: (BuildContext context) => Modular.get(), + return BlocProvider.value( + value: Modular.get(), child: ViewOrdersView(initialDate: initialDate), ); } @@ -66,6 +66,14 @@ class _ViewOrdersViewState extends State { } } + @override + void didUpdateWidget(ViewOrdersView oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.initialDate != oldWidget.initialDate && widget.initialDate != null) { + _cubit?.jumpToDate(widget.initialDate!); + } + } + @override Widget build(BuildContext context) { return BlocConsumer( diff --git a/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart b/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart index b23db650..6ba187d2 100644 --- a/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart +++ b/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart @@ -27,7 +27,7 @@ class ViewOrdersModule extends Module { i.add(GetAcceptedApplicationsForDayUseCase.new); // BLoCs - i.add(ViewOrdersCubit.new); + i.addSingleton(ViewOrdersCubit.new); } @override @@ -37,9 +37,11 @@ class ViewOrdersModule extends Module { child: (BuildContext context) { final Object? args = Modular.args.data; DateTime? initialDate; + + // Try parsing from args.data first if (args is DateTime) { initialDate = args; - } else if (args is Map) { + } else if (args is Map && args['initialDate'] != null) { final Object? rawDate = args['initialDate']; if (rawDate is DateTime) { initialDate = rawDate; @@ -47,6 +49,15 @@ class ViewOrdersModule extends Module { initialDate = DateTime.tryParse(rawDate); } } + + // Fallback to query params + if (initialDate == null) { + final String? queryDate = Modular.args.queryParams['initialDate']; + if (queryDate != null && queryDate.isNotEmpty) { + initialDate = DateTime.tryParse(queryDate); + } + } + return ViewOrdersPage(initialDate: initialDate); }, );