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.
void toOrdersSpecificDate(DateTime date) {
navigate(
pushNamedAndRemoveUntil(
ClientPaths.orders,
(_) => false,
arguments: <String, DateTime>{'initialDate': date},
);
}

View File

@@ -27,8 +27,8 @@ class ViewOrdersPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider<ViewOrdersCubit>(
create: (BuildContext context) => Modular.get<ViewOrdersCubit>(),
return BlocProvider<ViewOrdersCubit>.value(
value: Modular.get<ViewOrdersCubit>(),
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
Widget build(BuildContext context) {
return BlocConsumer<ViewOrdersCubit, ViewOrdersState>(

View File

@@ -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<String, dynamic>) {
} else if (args is Map<String, dynamic> && 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);
},
);