refactor: enhance date handling and cubit initialization in ViewOrders components
This commit is contained in:
@@ -143,7 +143,19 @@ class ViewOrdersRepositoryImpl implements IViewOrdersRepository {
|
||||
}
|
||||
|
||||
DateTime _endOfDay(DateTime dateTime) {
|
||||
return DateTime(dateTime.year, dateTime.month, dateTime.day, 23, 59, 59);
|
||||
// We add the current microseconds to ensure the query variables are unique
|
||||
// each time we fetch, bypassing any potential Data Connect caching.
|
||||
final DateTime now = DateTime.now();
|
||||
return DateTime(
|
||||
dateTime.year,
|
||||
dateTime.month,
|
||||
dateTime.day,
|
||||
23,
|
||||
59,
|
||||
59,
|
||||
now.millisecond,
|
||||
now.microsecond,
|
||||
);
|
||||
}
|
||||
|
||||
String _formatTime(fdc.Timestamp? timestamp) {
|
||||
|
||||
@@ -27,6 +27,7 @@ class ViewOrdersPage extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider<ViewOrdersCubit>(
|
||||
key: initialDate != null ? ValueKey<String>('view_orders_${initialDate!.toIso8601String()}') : null,
|
||||
create: (BuildContext context) => Modular.get<ViewOrdersCubit>(),
|
||||
child: ViewOrdersView(initialDate: initialDate),
|
||||
);
|
||||
@@ -52,16 +53,28 @@ class _ViewOrdersViewState extends State<ViewOrdersView> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.initialDate != null) {
|
||||
// Force initialization of cubit immediately
|
||||
_cubit = BlocProvider.of<ViewOrdersCubit>(context, listen: false);
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
if (!mounted) return;
|
||||
if (_didInitialJump) return;
|
||||
_didInitialJump = true;
|
||||
_cubit ??= BlocProvider.of<ViewOrdersCubit>(context);
|
||||
_cubit!.jumpToDate(widget.initialDate!);
|
||||
_cubit?.jumpToDate(widget.initialDate!);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(ViewOrdersView oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (widget.initialDate != null &&
|
||||
widget.initialDate != oldWidget.initialDate) {
|
||||
_cubit ??= BlocProvider.of<ViewOrdersCubit>(context, listen: false);
|
||||
_cubit?.jumpToDate(widget.initialDate!);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (_cubit == null) {
|
||||
|
||||
@@ -21,7 +21,7 @@ class ViewOrdersModule extends Module {
|
||||
@override
|
||||
void binds(Injector i) {
|
||||
// Repositories
|
||||
i.addLazySingleton<IViewOrdersRepository>(
|
||||
i.add<IViewOrdersRepository>(
|
||||
() => ViewOrdersRepositoryImpl(
|
||||
firebaseAuth: firebase.FirebaseAuth.instance,
|
||||
dataConnect: ExampleConnector.instance,
|
||||
@@ -29,8 +29,8 @@ class ViewOrdersModule extends Module {
|
||||
);
|
||||
|
||||
// UseCases
|
||||
i.addLazySingleton(GetOrdersUseCase.new);
|
||||
i.addLazySingleton(GetAcceptedApplicationsForDayUseCase.new);
|
||||
i.add(GetOrdersUseCase.new);
|
||||
i.add(GetAcceptedApplicationsForDayUseCase.new);
|
||||
|
||||
// BLoCs
|
||||
i.add(
|
||||
|
||||
Reference in New Issue
Block a user