diff --git a/assets/images/svg/close_bottom_sheet_icon.svg b/assets/images/svg/close_bottom_sheet_icon.svg
new file mode 100644
index 0000000..599ce85
--- /dev/null
+++ b/assets/images/svg/close_bottom_sheet_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart
index 2077440..7f1b6d1 100644
--- a/lib/core/app_assets.dart
+++ b/lib/core/app_assets.dart
@@ -71,9 +71,9 @@ class AppAssets {
static const String insurance_history_icon = '$svgBasePath/insurance_history_icon.svg';
static const String cancel_circle_icon = '$svgBasePath/cancel_circle.svg';
static const String update_insurance_card_icon = '$svgBasePath/update_insurance_card.svg';
+ static const String close_bottom_sheet_icon = '$svgBasePath/close_bottom_sheet_icon.svg';
//bottom navigation//
-
static const String homeBottom = '$svgBasePath/home_bottom.svg';
static const String bookAppoBottom = '$svgBasePath/book_appo_bottom.svg';
static const String myFilesBottom = '$svgBasePath/my_files_bottom.svg';
diff --git a/lib/features/insurance/insurance_view_model.dart b/lib/features/insurance/insurance_view_model.dart
index 545a32a..fac09da 100644
--- a/lib/features/insurance/insurance_view_model.dart
+++ b/lib/features/insurance/insurance_view_model.dart
@@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/services/error_handler_service.dart';
class InsuranceViewModel extends ChangeNotifier {
bool isInsuranceLoading = false;
+ bool isInsuranceHistoryLoading = false;
InsuranceRepo insuranceRepo;
ErrorHandlerService errorHandlerService;
@@ -17,10 +18,16 @@ class InsuranceViewModel extends ChangeNotifier {
initInsuranceProvider() {
patientInsuranceList.clear();
isInsuranceLoading = true;
+ isInsuranceHistoryLoading = true;
getPatientInsuranceDetails();
notifyListeners();
}
+ setIsInsuranceHistoryLoading(bool val) {
+ isInsuranceHistoryLoading = val;
+ notifyListeners();
+ }
+
Future getPatientInsuranceDetails({Function(dynamic)? onSuccess, Function(String)? onError}) async {
final result = await insuranceRepo.getPatientInsuranceDetails(patientId: "1231755");
diff --git a/lib/presentation/insurance/insurance_home_page.dart b/lib/presentation/insurance/insurance_home_page.dart
index eea50c5..9f9271a 100644
--- a/lib/presentation/insurance/insurance_home_page.dart
+++ b/lib/presentation/insurance/insurance_home_page.dart
@@ -17,6 +17,8 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
import 'package:hmg_patient_app_new/widgets/shimmer/movies_shimmer_widget.dart';
import 'package:provider/provider.dart';
+import 'widgets/insurance_history.dart';
+
class InsuranceHomePage extends StatefulWidget {
const InsuranceHomePage({super.key});
@@ -59,14 +61,9 @@ class _InsuranceHomePageState extends State {
iconSize: 21.h,
text: LocaleKeys.history.tr(context: context),
onPressed: () {
- showCommonBottomSheet(
- context,
- child: Container(),
- callBackFunc: () {},
- title: "",
- height: ResponsiveExtension.screenHeight * 0.5,
- isCloseButtonVisible: false,
- );
+ insuranceVM.setIsInsuranceHistoryLoading(true);
+ showCommonBottomSheet(context,
+ child: InsuranceHistory(), callBackFunc: () {}, title: "", height: ResponsiveExtension.screenHeight * 0.5, isCloseButtonVisible: false, isFullScreen: false);
},
backgroundColor: AppColors.primaryRedColor.withOpacity(0.1),
borderColor: AppColors.primaryRedColor.withOpacity(0.0),
diff --git a/lib/presentation/insurance/widgets/insurance_history.dart b/lib/presentation/insurance/widgets/insurance_history.dart
new file mode 100644
index 0000000..0708c7c
--- /dev/null
+++ b/lib/presentation/insurance/widgets/insurance_history.dart
@@ -0,0 +1,39 @@
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:hmg_patient_app_new/core/app_assets.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/widget_extensions.dart';
+import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart';
+import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
+import 'package:hmg_patient_app_new/widgets/shimmer/movies_shimmer_widget.dart';
+import 'package:provider/provider.dart';
+
+class InsuranceHistory extends StatelessWidget {
+ InsuranceHistory({super.key});
+
+ late InsuranceViewModel insuranceViewModel;
+
+ @override
+ Widget build(BuildContext context) {
+ insuranceViewModel = Provider.of(context);
+ return Consumer(builder: (context, insuranceVM, child) {
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ LocaleKeys.history.tr(context: context).toText24(isBold: true),
+ Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon).onPress(() {
+ Navigator.of(context).pop();
+ }),
+ ],
+ ).paddingSymmetrical(24.h, 24.h),
+ insuranceVM.isInsuranceHistoryLoading ? const MoviesShimmerWidget().paddingSymmetrical(24.h, 24.h) : Container()
+ ],
+ );
+ });
+ }
+}
diff --git a/lib/widgets/common_bottom_sheet.dart b/lib/widgets/common_bottom_sheet.dart
index f3d7425..f6039eb 100644
--- a/lib/widgets/common_bottom_sheet.dart
+++ b/lib/widgets/common_bottom_sheet.dart
@@ -2,14 +2,19 @@ import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_export.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/widget_extensions.dart';
-import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
-void showCommonBottomSheet(BuildContext context, {required Widget child, required VoidCallback callBackFunc, String? title, required double height, bool isCloseButtonVisible = true}) {
+void showCommonBottomSheet(BuildContext context,
+ {required Widget child, required VoidCallback callBackFunc, String? title, required double height, bool isCloseButtonVisible = true, bool isFullScreen = true}) {
showModalBottomSheet(
+ sheetAnimationStyle: AnimationStyle(
+ duration: Duration(milliseconds: 500), // Custom animation duration
+ reverseDuration: Duration(milliseconds: 300), // Custom reverse animation duration
+ ),
context: context,
- isScrollControlled: false,
+ isScrollControlled: true,
showDragHandle: false,
backgroundColor: AppColors.scaffoldBgColor,
builder: (BuildContext context) {
@@ -19,6 +24,7 @@ void showCommonBottomSheet(BuildContext context, {required Widget child, require
child: ButtonSheetContent(
title: title!,
isCloseButtonVisible: isCloseButtonVisible,
+ isFullScreen: isFullScreen,
child: child,
),
);
@@ -31,8 +37,9 @@ class ButtonSheetContent extends StatelessWidget {
final Widget child;
final String title;
final bool isCloseButtonVisible;
+ final bool isFullScreen;
- const ButtonSheetContent({super.key, required this.child, required this.isCloseButtonVisible, required this.title});
+ const ButtonSheetContent({super.key, required this.child, required this.isCloseButtonVisible, required this.title, required this.isFullScreen});
@override
Widget build(BuildContext context) {
@@ -42,20 +49,20 @@ class ButtonSheetContent extends StatelessWidget {
// SizedBox(
// height: 20.h,
// ),
- Center(
- child: Container(
- margin: const EdgeInsets.only(top: 18, bottom: 12),
- height: 4,
- width: 40.h,
- decoration: BoxDecoration(
- color: Colors.grey[400],
- borderRadius: BorderRadius.circular(2),
- ),
- ),
- ),
+ // Center(
+ // child: Container(
+ // margin: const EdgeInsets.only(top: 18, bottom: 12),
+ // height: 4,
+ // width: 40.h,
+ // decoration: BoxDecoration(
+ // color: Colors.grey[400],
+ // borderRadius: BorderRadius.circular(2),
+ // ),
+ // ),
+ // ),
// Close button
- isCloseButtonVisible
+ isCloseButtonVisible && isFullScreen
? Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Utils.buildSvgWithAssets(icon: AppAssets.closeBottomNav, width: 32, height: 32).onPress(() {
@@ -64,17 +71,15 @@ class ButtonSheetContent extends StatelessWidget {
)
: SizedBox(),
- SizedBox(
- height: 20,
- ),
- Padding(
- padding: EdgeInsets.symmetric(horizontal: 16),
- child: Text(
- title,
- style: TextStyle(fontSize: 27.h, fontWeight: FontWeight.bold),
- ),
- ),
- const SizedBox(height: 16),
+ isFullScreen
+ ? Column(
+ children: [
+ SizedBox(height: 20.h),
+ Padding(padding: EdgeInsets.symmetric(horizontal: 16.h), child: title.toText24(isBold: true)),
+ SizedBox(height: 16.h),
+ ],
+ )
+ : SizedBox(),
Expanded(child: child)
],