feat(view_orders): enhance date navigation and improve ViewOrdersCubit instantiation

This commit is contained in:
Achintha Isuru
2026-02-21 20:14:57 -05:00
parent 71b5f743de
commit 9817dbeec8
3 changed files with 25 additions and 5 deletions

View File

@@ -175,8 +175,9 @@ extension ClientNavigator on IModularNavigator {
/// Navigates to the order details page to a specific date. /// Navigates to the order details page to a specific date.
void toOrdersSpecificDate(DateTime date) { void toOrdersSpecificDate(DateTime date) {
navigate( pushNamedAndRemoveUntil(
ClientPaths.orders, ClientPaths.orders,
(_) => false,
arguments: <String, DateTime>{'initialDate': date}, arguments: <String, DateTime>{'initialDate': date},
); );
} }

View File

@@ -27,8 +27,8 @@ class ViewOrdersPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider<ViewOrdersCubit>( return BlocProvider<ViewOrdersCubit>.value(
create: (BuildContext context) => Modular.get<ViewOrdersCubit>(), value: Modular.get<ViewOrdersCubit>(),
child: ViewOrdersView(initialDate: initialDate), child: ViewOrdersView(initialDate: initialDate),
); );
} }
@@ -66,6 +66,14 @@ class _ViewOrdersViewState extends State<ViewOrdersView> {
} }
} }
@override
void didUpdateWidget(ViewOrdersView oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.initialDate != oldWidget.initialDate && widget.initialDate != null) {
_cubit?.jumpToDate(widget.initialDate!);
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocConsumer<ViewOrdersCubit, ViewOrdersState>( return BlocConsumer<ViewOrdersCubit, ViewOrdersState>(

View File

@@ -27,7 +27,7 @@ class ViewOrdersModule extends Module {
i.add(GetAcceptedApplicationsForDayUseCase.new); i.add(GetAcceptedApplicationsForDayUseCase.new);
// BLoCs // BLoCs
i.add(ViewOrdersCubit.new); i.addSingleton(ViewOrdersCubit.new);
} }
@override @override
@@ -37,9 +37,11 @@ class ViewOrdersModule extends Module {
child: (BuildContext context) { child: (BuildContext context) {
final Object? args = Modular.args.data; final Object? args = Modular.args.data;
DateTime? initialDate; DateTime? initialDate;
// Try parsing from args.data first
if (args is DateTime) { if (args is DateTime) {
initialDate = args; initialDate = args;
} else if (args is Map<String, dynamic>) { } else if (args is Map<String, dynamic> && args['initialDate'] != null) {
final Object? rawDate = args['initialDate']; final Object? rawDate = args['initialDate'];
if (rawDate is DateTime) { if (rawDate is DateTime) {
initialDate = rawDate; initialDate = rawDate;
@@ -47,6 +49,15 @@ class ViewOrdersModule extends Module {
initialDate = DateTime.tryParse(rawDate); 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); return ViewOrdersPage(initialDate: initialDate);
}, },
); );