|
|
|
@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
|
|
|
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/enums.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/enums.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
|
|
|
|
|
|
|
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
|
|
|
import 'package:hmg_patient_app_new/extensions/string_extensions.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/extensions/widget_extensions.dart';
|
|
|
|
import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart';
|
|
|
|
import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart';
|
|
|
|
@ -19,7 +20,7 @@ import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart';
|
|
|
|
import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart';
|
|
|
|
import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart';
|
|
|
|
import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart';
|
|
|
|
import 'collapsing_list_view.dart';
|
|
|
|
import '../../widgets/appbar/collapsing_list_view.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class LabOrdersPage extends StatefulWidget {
|
|
|
|
class LabOrdersPage extends StatefulWidget {
|
|
|
|
const LabOrdersPage({super.key});
|
|
|
|
const LabOrdersPage({super.key});
|
|
|
|
@ -34,6 +35,7 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
int? expandedIndex;
|
|
|
|
int? expandedIndex;
|
|
|
|
String? selectedFilterText = '';
|
|
|
|
String? selectedFilterText = '';
|
|
|
|
int activeIndex = 0;
|
|
|
|
int activeIndex = 0;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
void initState() {
|
|
|
|
scheduleMicrotask(() {
|
|
|
|
scheduleMicrotask(() {
|
|
|
|
@ -86,9 +88,7 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
],
|
|
|
|
],
|
|
|
|
onTabChange: (index) {
|
|
|
|
onTabChange: (index) {
|
|
|
|
activeIndex = index;
|
|
|
|
activeIndex = index;
|
|
|
|
setState(() {
|
|
|
|
setState(() {});
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(height: 16.h),
|
|
|
|
SizedBox(height: 16.h),
|
|
|
|
@ -104,7 +104,11 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
shrinkWrap: true,
|
|
|
|
shrinkWrap: true,
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
padding: EdgeInsets.zero,
|
|
|
|
padding: EdgeInsets.zero,
|
|
|
|
itemCount: model.isLabOrdersLoading ? 5 : model.patientLabOrders.length,
|
|
|
|
itemCount: model.isLabOrdersLoading
|
|
|
|
|
|
|
|
? 5
|
|
|
|
|
|
|
|
: model.patientLabOrders.isNotEmpty
|
|
|
|
|
|
|
|
? model.patientLabOrders.length
|
|
|
|
|
|
|
|
: 1,
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
final isExpanded = expandedIndex == index;
|
|
|
|
final isExpanded = expandedIndex == index;
|
|
|
|
return model.isLabOrdersLoading
|
|
|
|
return model.isLabOrdersLoading
|
|
|
|
@ -114,7 +118,8 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
index: index,
|
|
|
|
index: index,
|
|
|
|
isLoading: true,
|
|
|
|
isLoading: true,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
: AnimationConfiguration.staggeredList(
|
|
|
|
: model.patientLabOrders.isNotEmpty
|
|
|
|
|
|
|
|
? AnimationConfiguration.staggeredList(
|
|
|
|
position: index,
|
|
|
|
position: index,
|
|
|
|
duration: const Duration(milliseconds: 500),
|
|
|
|
duration: const Duration(milliseconds: 500),
|
|
|
|
child: SlideAnimation(
|
|
|
|
child: SlideAnimation(
|
|
|
|
@ -130,14 +135,15 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
index: index,
|
|
|
|
index: index,
|
|
|
|
isExpanded: isExpanded)),
|
|
|
|
isExpanded: isExpanded)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
)
|
|
|
|
|
|
|
|
: Utils.getNoDataWidget(context, noDataText: "You don't have any lab results yet.".needTranslation);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
)
|
|
|
|
)
|
|
|
|
: ListView.builder(
|
|
|
|
: ListView.builder(
|
|
|
|
shrinkWrap: true,
|
|
|
|
shrinkWrap: true,
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
padding: EdgeInsets.zero,
|
|
|
|
padding: EdgeInsets.zero,
|
|
|
|
itemCount: model.isLabOrdersLoading ? 5 :model.uniqueTests.toList().length,
|
|
|
|
itemCount: model.isLabOrdersLoading ? 5 : model.uniqueTests.toList().length,
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
final isExpanded = expandedIndex == index;
|
|
|
|
final isExpanded = expandedIndex == index;
|
|
|
|
return model.isLabOrdersLoading
|
|
|
|
return model.isLabOrdersLoading
|
|
|
|
@ -146,7 +152,8 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
labOrder: null,
|
|
|
|
labOrder: null,
|
|
|
|
index: index,
|
|
|
|
index: index,
|
|
|
|
isLoading: true,
|
|
|
|
isLoading: true,
|
|
|
|
) : AnimationConfiguration.staggeredList(
|
|
|
|
)
|
|
|
|
|
|
|
|
: AnimationConfiguration.staggeredList(
|
|
|
|
position: index,
|
|
|
|
position: index,
|
|
|
|
duration: const Duration(milliseconds: 500),
|
|
|
|
duration: const Duration(milliseconds: 500),
|
|
|
|
child: SlideAnimation(
|
|
|
|
child: SlideAnimation(
|
|
|
|
@ -163,7 +170,6 @@ class _LabOrdersPageState extends State<LabOrdersPage> {
|
|
|
|
isExpanded: isExpanded)),
|
|
|
|
isExpanded: isExpanded)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
)
|
|
|
|
)
|
|
|
|
],
|
|
|
|
],
|
|
|
|
|