feat(view_orders): enhance date navigation and improve ViewOrdersCubit instantiation
This commit is contained in:
@@ -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},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>(
|
||||||
|
|||||||
@@ -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);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user