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/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/emergency_services/model/resp_model/ProjectAvgERWaitingTime.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; class NearestERItem extends StatelessWidget { final ProjectAvgERWaitingTime nearestERItem; final bool isLoading; const NearestERItem({ super.key, required this.nearestERItem, required this.isLoading }) ; @override Widget build(BuildContext context) { return Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: Colors.white, customBorder: BorderRadius.only( topLeft: Radius.circular(24.h), topRight: Radius.circular(24.h), ), ), child: Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ (isLoading || nearestERItem.projectImageURL?.isEmpty == true) ? Container( width: 24.h, height: 24.h, decoration: BoxDecoration( color: Colors.grey.shade300, shape: BoxShape.circle, ), ).toShimmer2(isShow: isLoading) : Utils.buildImgWithNetwork( url: nearestERItem.projectImageURL ?? '', iconColor: Colors.transparent, ).circle(24.h).toShimmer2(isShow: isLoading), const SizedBox(width: 12), Expanded( child: (nearestERItem.projectName?.toText16( color: AppColors.textColor, weight: FontWeight.w600, ) ?? SizedBox.shrink()).toShimmer2(isShow: isLoading), ), // TODO: Add hospital icon logic here if needed ], ), SizedBox(height: 8.h), Row( spacing: 8.h, children: [ AppCustomChipWidget( labelText: "${nearestERItem.distanceInKilometers} km".needTranslation, icon: AppAssets.location, iconHasColor: false, labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), padding: EdgeInsets.all(8.h), ).toShimmer2(isShow: isLoading), AppCustomChipWidget( labelText: "Expected waiting time: ${nearestERItem.getTime()} mins".needTranslation, icon: AppAssets.waiting_time_clock, iconHasColor: false, labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), padding: EdgeInsets.all(8.h), ).toShimmer2(isShow: isLoading), ], ), SizedBox(height: 16.h), Row( children: [ Expanded( child: CustomButton( text: "View Location on Google Maps".needTranslation, iconSize: 18.h, icon: AppAssets.location, onPressed: () { context.read().openDirections(destLat: double.parse(nearestERItem.latitude??"0.0"), destLng: double.parse(nearestERItem.longitude??"0.0") ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, iconColor: AppColors.primaryRedColor, height: 40.h, fontSize: 14, fontWeight: FontWeight.w500, ).toShimmer2(isShow: isLoading), ), SizedBox(width: 8.h), SizedBox( height: 40.h, width: 40.h, child: CustomButton( text: '', iconSize: 18.h, icon: AppAssets.call_fill, onPressed: () { context.read().openDialer( nearestERItem.phonenumber??""); }, backgroundColor: AppColors.greyColor, iconColor: AppColors.textColor, borderColor: AppColors.greyColor, height: 40.h, ).toShimmer2(isShow: isLoading), ), ], ), ], ), ), ); } }