You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HMG_Patient_App_New/lib/presentation/todo_section/todo_page.dart

97 lines
3.5 KiB
Dart

import 'dart:async';
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_state.dart';
import 'package:hmg_patient_app_new/core/dependencies.dart';
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart';
import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart';
import 'package:hmg_patient_app_new/presentation/todo_section/ancillary_procedures_details_page.dart';
import 'package:hmg_patient_app_new/presentation/todo_section/widgets/ancillary_orders_list.dart';
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart';
import 'package:provider/provider.dart';
class ToDoPage extends StatefulWidget {
const ToDoPage({super.key});
@override
State<ToDoPage> createState() => _ToDoPageState();
}
class _ToDoPageState extends State<ToDoPage> {
late AppState appState;
@override
void initState() {
final TodoSectionViewModel todoSectionViewModel = context.read<TodoSectionViewModel>();
scheduleMicrotask(() async {
if (appState.isAuthenticated) {
await todoSectionViewModel.initializeTodoSectionViewModel();
}
});
super.initState();
}
@override
void dispose() {
super.dispose();
}
Widget _buildLoadingShimmer() {
return ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: 3,
itemBuilder: (context, index) {
return AncillaryOrderCard(
order: AncillaryOrderItem(),
isLoading: true,
);
},
);
}
@override
Widget build(BuildContext context) {
appState = getIt.get<AppState>();
return CollapsingListView(
title: "ToDo List".needTranslation,
isLeading: false,
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 16.h),
"Ancillary Orders".needTranslation.toText18(isBold: true),
Consumer<TodoSectionViewModel>(
builder: (BuildContext context, TodoSectionViewModel todoSectionViewModel, Widget? child) {
return todoSectionViewModel.isAncillaryOrdersLoading
? _buildLoadingShimmer()
: AncillaryOrdersList(
orders: todoSectionViewModel.patientAncillaryOrdersList,
onCheckIn: (order) => log("Check-in for order: ${order.orderNo}"),
onViewDetails: (order) async {
Navigator.of(context).push(CustomPageRoute(
page: AncillaryOrderDetailsList(
appointmentNoVida: order.appointmentNo ?? 0,
orderNo: order.orderNo ?? 0,
projectID: order.projectID ?? 0,
projectName: order.projectName ?? "",
)));
log("View details for order: ${order.orderNo}");
},
);
},
),
],
).paddingSymmetrical(24.w, 0),
),
);
}
}