@ -1,5 +1,6 @@
import ' package:easy_localization/easy_localization.dart ' ;
import ' package:easy_localization/easy_localization.dart ' ;
import ' package:flutter/material.dart ' ;
import ' package:flutter/material.dart ' ;
import ' package:flutter_staggered_animations/flutter_staggered_animations.dart ' ;
import ' package:get_it/get_it.dart ' ;
import ' package:get_it/get_it.dart ' ;
import ' package:hmg_patient_app_new/core/app_assets.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/app_export.dart ' ;
@ -17,6 +18,8 @@ import 'package:hmg_patient_app_new/presentation/contact_us/contact_us.dart';
import ' package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart ' ;
import ' package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart ' ;
import ' package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart ' ;
import ' package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart ' ;
import ' package:hmg_patient_app_new/presentation/hmg_services/services_view.dart ' ;
import ' package:hmg_patient_app_new/presentation/hmg_services/services_view.dart ' ;
import ' package:hmg_patient_app_new/presentation/home/data/landing_page_data.dart ' ;
import ' package:hmg_patient_app_new/presentation/home/widgets/large_service_card.dart ' ;
import ' package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart ' ;
import ' package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart ' ;
import ' package:hmg_patient_app_new/services/dialog_service.dart ' ;
import ' package:hmg_patient_app_new/services/dialog_service.dart ' ;
import ' package:hmg_patient_app_new/services/navigation_service.dart ' ;
import ' package:hmg_patient_app_new/services/navigation_service.dart ' ;
@ -95,15 +98,15 @@ class ServicesPage extends StatelessWidget {
LoaderBottomSheet . hideLoader ( ) ;
LoaderBottomSheet . hideLoader ( ) ;
} ) ;
} ) ;
} ) ,
} ) ,
HmgServicesComponentModel (
/ / HmgServicesComponentModel (
3 ,
/ / 3 ,
" Home Health Care " . needTranslation ,
/ / " Home Health Care " . needTranslation ,
" " . needTranslation ,
/ / " " . needTranslation ,
AppAssets . homeBottom ,
/ / AppAssets . homeBottom ,
bgColor: AppColors . primaryRedColor ,
/ / bgColor: AppColors . primaryRedColor ,
true ,
/ / true ,
route: AppRoutes . homeHealthCarePage ,
/ / route: AppRoutes . homeHealthCarePage ,
) ,
/ / ) ,
/ / HmgServicesComponentModel (
/ / HmgServicesComponentModel (
/ / 11 ,
/ / 11 ,
/ / " Virtual Tour " . needTranslation ,
/ / " Virtual Tour " . needTranslation ,
@ -155,8 +158,8 @@ class ServicesPage extends StatelessWidget {
AppAssets . smartwatch_icon ,
AppAssets . smartwatch_icon ,
bgColor: AppColors . whiteColor ,
bgColor: AppColors . whiteColor ,
true ,
true ,
/ / route: AppRoutes . smartWatches ,
route: AppRoutes . smartWatches ,
route: AppRoutes . huaweiHealthExample ,
/ / route: AppRoutes . huaweiHealthExample ,
) ,
) ,
] ;
] ;
@ -169,331 +172,359 @@ class ServicesPage extends StatelessWidget {
body: CollapsingListView (
body: CollapsingListView (
title: " Explore Services " . needTranslation ,
title: " Explore Services " . needTranslation ,
isLeading: false ,
isLeading: false ,
child: Padding (
child: Column (
padding: EdgeInsets . symmetric ( horizontal: 24. h ) ,
crossAxisAlignment: CrossAxisAlignment . start ,
child: Column (
children: [
crossAxisAlignment: CrossAxisAlignment . start ,
SizedBox ( height: 16. h ) ,
children: [
" Medical & Care Services " . needTranslation . toText18 ( isBold: true ) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 16. h ) ,
SizedBox ( height: 16. h ) ,
" Medical & Care Services " . needTranslation . toText18 ( isBold: true ) ,
GridView . builder (
SizedBox ( height: 16. h ) ,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount (
GridView . builder (
crossAxisCount: ( isFoldable | | isTablet ) ? 6 : 4 , / / 4 icons per row
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount (
crossAxisSpacing: 12. w ,
crossAxisCount: ( isFoldable | | isTablet ) ? 6 : 4 , / / 4 icons per row
mainAxisSpacing: 18. h ,
crossAxisSpacing: 12. w ,
childAspectRatio: 0.8 ,
mainAxisSpacing: 18. h ,
) ,
childAspectRatio: 0.8 ,
physics: NeverScrollableScrollPhysics ( ) ,
) ,
shrinkWrap: true ,
physics: NeverScrollableScrollPhysics ( ) ,
itemCount: hmgServices . length ,
padding: EdgeInsets . zero ,
itemBuilder: ( BuildContext context , int index ) {
return ServiceGridViewItem ( hmgServices [ index ] , index , false , isHealthToolIcon: false ) ;
} ,
) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 24. h ) ,
" HMG Services " . needTranslation . toText18 ( isBold: true ) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 16. h ) ,
SizedBox (
height: 350. h ,
child: ListView . separated (
scrollDirection: Axis . horizontal ,
itemCount: LandingPageData . getServiceCardsList . length ,
shrinkWrap: true ,
shrinkWrap: true ,
itemCount: hmgServices . length ,
padding: EdgeInsets . symmetric ( horizontal: 24. w ) ,
padding: EdgeInsets . zero ,
itemBuilder: ( context , index ) {
itemBuilder: ( BuildContext context , int index ) {
return AnimationConfiguration . staggeredList (
return ServiceGridViewItem ( hmgServices [ index ] , index , false , isHealthToolIcon: false ) ;
position: index ,
duration: const Duration ( milliseconds: 1000 ) ,
child: SlideAnimation (
horizontalOffset: 100.0 ,
child: FadeInAnimation (
child: LargeServiceCard (
serviceCardData: LandingPageData . getServiceCardsList [ index ] ,
image: LandingPageData . getServiceCardsList [ index ] . icon ,
title: LandingPageData . getServiceCardsList [ index ] . title ,
subtitle: LandingPageData . getServiceCardsList [ index ] . subtitle ,
icon: LandingPageData . getServiceCardsList [ index ] . largeCardIcon ,
) ,
) ,
) ,
) ;
} ,
} ,
separatorBuilder: ( BuildContext cxt , int index ) = > SizedBox ( width: 16. w ) ,
) ,
) ,
SizedBox ( height: 24. h ) ,
) ,
" Personal Services " . needTranslation . toText18 ( isBold: true ) ,
SizedBox ( height: 24. h ) ,
SizedBox ( height: 16. h ) ,
" Personal Services " . needTranslation . toText18 ( isBold: true ) . paddingSymmetrical ( 24. w , 0 ) ,
Row (
SizedBox ( height: 16. h ) ,
children: [
Row (
Expanded (
children: [
child: Container (
Expanded (
height: 170. h ,
child: Container (
padding: EdgeInsets . all ( 16. w ) ,
height: 170. h ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
padding: EdgeInsets . all ( 16. w ) ,
color: AppColors . whiteColor ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
borderRadius: 20. r ,
color: AppColors . whiteColor ,
hasShadow: false ,
borderRadius: 20. r ,
) ,
hasShadow: false ,
child: Column (
) ,
crossAxisAlignment: CrossAxisAlignment . start ,
child: Column (
children: [
crossAxisAlignment: CrossAxisAlignment . start ,
Row (
children: [
spacing: 8. w ,
Row (
crossAxisAlignment: CrossAxisAlignment . center ,
spacing: 8. w ,
crossAxisAlignment: CrossAxisAlignment . center ,
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . wallet , width: 30. w , height: 30. h ) ,
" Habib Wallet " . needTranslation . toText14 ( weight: FontWeight . w600 , maxlines: 2 ) . expanded ,
Utils . buildSvgWithAssets ( icon: AppAssets . arrow_forward ) ,
] ,
) ,
Spacer ( ) ,
Consumer < HabibWalletViewModel > ( builder: ( context , habibWalletVM , child ) {
return Utils . getPaymentAmountWithSymbol2 ( habibWalletVM . habibWalletAmount , isExpanded: false )
. toShimmer2 ( isShow: habibWalletVM . isWalletAmountLoading , radius: 12. r , width: 80. w , height: 24. h ) ;
} ) ,
Spacer ( ) ,
CustomButton (
height: 40. h ,
icon: AppAssets . recharge_icon ,
iconSize: 16. w ,
iconColor: AppColors . infoColor ,
textColor: AppColors . infoColor ,
text: " Recharge " . needTranslation ,
borderWidth: 0. w ,
fontWeight: FontWeight . w500 ,
borderColor: Colors . transparent ,
backgroundColor: Color ( 0xff45A2F8 ) . withValues ( alpha: 0.08 ) ,
padding: EdgeInsets . all ( 8. w ) ,
fontSize: 12. f ,
onPressed: ( ) {
Navigator . of ( context ) . push ( CustomPageRoute ( page: RechargeWalletPage ( ) ) ) ;
} ,
) ,
] ,
) . onPress ( ( ) {
Navigator . of ( context ) . push ( CustomPageRoute ( page: HabibWalletPage ( ) ) ) ;
} ) ,
) ,
) ,
SizedBox ( width: 16. w ) ,
Expanded (
child: Container (
height: 170. h ,
padding: EdgeInsets . all ( 16. w ) ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 20. r ,
hasShadow: false ,
) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
spacing: 8. w ,
crossAxisAlignment: CrossAxisAlignment . center ,
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . services_medical_file_icon , width: 30. w , height: 30. h ) ,
" Medical Files " . needTranslation . toText14 ( weight: FontWeight . w600 , maxlines: 2 ) . expanded ,
Utils . buildSvgWithAssets ( icon: AppAssets . arrow_forward ) ,
] ,
) ,
Spacer ( ) ,
Wrap (
spacing: - 8. h ,
/ / runSpacing: 0. h ,
children: [
Utils . buildImgWithAssets (
icon: AppAssets . babyGirlImg ,
height: 28. h ,
width: 28. w ,
border: 1 ,
fit: BoxFit . contain ,
borderRadius: 50. r ,
) ,
Utils . buildImgWithAssets (
icon: AppAssets . femaleImg ,
height: 28. h ,
width: 28. w ,
border: 1 ,
borderRadius: 50. r ,
fit: BoxFit . contain ,
) ,
Utils . buildImgWithAssets (
icon: AppAssets . maleImg ,
height: 28. h ,
width: 28. w ,
border: 1 ,
borderRadius: 50. r ,
fit: BoxFit . contain ,
) ,
] ,
) ,
Spacer ( ) ,
CustomButton (
height: 40. h ,
icon: AppAssets . add_icon ,
iconSize: 16. w ,
iconColor: AppColors . primaryRedColor ,
textColor: AppColors . primaryRedColor ,
text: " Add Member " . needTranslation ,
borderWidth: 0. w ,
fontWeight: FontWeight . w500 ,
borderColor: Colors . transparent ,
backgroundColor: AppColors . primaryRedColor . withValues ( alpha: 0.08 ) ,
padding: EdgeInsets . all ( 8. w ) ,
fontSize: 12. f ,
onPressed: ( ) {
DialogService dialogService = getIt . get < DialogService > ( ) ;
medicalFileViewModel . clearAuthValues ( ) ;
dialogService . showAddFamilyFileSheet (
label: " Add Family Member " . needTranslation ,
message: " Please fill the below field to add a new family member to your profile " . needTranslation ,
onVerificationPress: ( ) {
medicalFileViewModel . addFamilyFile ( otpTypeEnum: OTPTypeEnum . sms ) ;
} ) ;
} ,
) ,
] ,
) . onPress ( ( ) {
Navigator . of ( context ) . push (
CustomPageRoute (
page: MedicalFilePage ( ) ,
) ,
) ;
} ) ,
) ,
) ,
] ,
) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 24. h ) ,
" Health Tools " . needTranslation . toText18 ( isBold: true ) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 16. h ) ,
GridView . builder (
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount (
crossAxisCount: ( isFoldable | | isTablet ) ? 6 : 4 , / / 4 icons per row
crossAxisSpacing: 12. w ,
mainAxisSpacing: 18. h ,
childAspectRatio: 0.8 ,
) ,
physics: NeverScrollableScrollPhysics ( ) ,
shrinkWrap: true ,
itemCount: hmgHealthToolServices . length ,
padding: EdgeInsets . zero ,
itemBuilder: ( BuildContext context , int index ) {
return ServiceGridViewItem (
hmgHealthToolServices [ index ] ,
index ,
false ,
isHealthToolIcon: true ,
) ;
} ,
) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 24. h ) ,
" Support Services " . needTranslation . toText18 ( isBold: true ) . paddingSymmetrical ( 24. w , 0 ) ,
SizedBox ( height: 16. h ) ,
Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
children: [
Expanded (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 12. h ,
hasShadow: false ,
) ,
child: Padding (
padding: EdgeInsets . all ( 16. h ) ,
child: Row (
children: [
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . wallet , width: 30. w , height: 30. h ) ,
Utils . buildSvgWithAssets (
" Habib Wallet " . needTranslation . toText14 ( weight: FontWeight . w600 , maxlines: 2 ) . expanded ,
icon: AppAssets . virtual_tour_icon ,
Utils . buildSvgWithAssets ( icon: AppAssets . arrow_forward ) ,
width: 32. w ,
height: 32. h ,
fit: BoxFit . contain ,
) ,
SizedBox ( width: 8. w ) ,
" Virtual Tour " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
] ,
) ,
) ,
Spacer ( ) ,
) ,
Consumer < HabibWalletViewModel > ( builder: ( context , habibWalletVM , child ) {
return Utils . getPaymentAmountWithSymbol2 ( habibWalletVM . habibWalletAmount , isExpanded: false )
. toShimmer2 ( isShow: habibWalletVM . isWalletAmountLoading , radius: 12. r , width: 80. w , height: 24. h ) ;
} ) ,
Spacer ( ) ,
CustomButton (
height: 40. h ,
icon: AppAssets . recharge_icon ,
iconSize: 16. w ,
iconColor: AppColors . infoColor ,
textColor: AppColors . infoColor ,
text: " Recharge " . needTranslation ,
borderWidth: 0. w ,
fontWeight: FontWeight . w500 ,
borderColor: Colors . transparent ,
backgroundColor: Color ( 0xff45A2F8 ) . withValues ( alpha: 0.08 ) ,
padding: EdgeInsets . all ( 8. w ) ,
fontSize: 12. f ,
onPressed: ( ) {
Navigator . of ( context ) . push ( CustomPageRoute ( page: RechargeWalletPage ( ) ) ) ;
} ,
) ,
] ,
) . onPress ( ( ) {
) . onPress ( ( ) {
Navigator . of ( context ) . push ( CustomPageRoute ( page: HabibWalletPage ( ) ) ) ;
Utils . openWebView (
url: ' https://hmgwebservices.com/vt_mobile/html/index.html ' ,
) ;
} ) ,
} ) ,
) ,
) ,
) ,
SizedBox ( width: 16. w ) ,
SizedBox ( width: 16. w ) ,
Expanded (
Expanded (
child: Container (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
height: 170. h ,
color: AppColors . whiteColor ,
padding: EdgeInsets . all ( 16. w ) ,
borderRadius: 12. h ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
hasShadow: false ,
color: AppColors . whiteColor ,
) ,
borderRadius: 20. r ,
child: Padding (
hasShadow: false ,
padding: EdgeInsets . all ( 16. h ) ,
) ,
child: Row (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
spacing: 8. w ,
crossAxisAlignment: CrossAxisAlignment . center ,
children: [
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . services_medical_file_icon , width: 30. w , height: 30. h ) ,
Utils . buildSvgWithAssets (
" Medical Files " . needTranslation . toText14 ( weight: FontWeight . w600 , maxlines: 2 ) . expanded ,
icon: AppAssets . car_parking_icon ,
Utils . buildSvgWithAssets ( icon: AppAssets . arrow_forward ) ,
width: 32. w ,
height: 32. h ,
fit: BoxFit . contain ,
) ,
SizedBox ( width: 8. w ) ,
" Car Parking " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
] ,
) ,
) ,
Spacer ( ) ,
) ,
Wrap (
) ,
spacing: - 8. h ,
) ,
/ / runSpacing: 0. h ,
] ,
) ,
SizedBox ( height: 16. h ) ,
Row (
children: [
Expanded (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 12. h ,
hasShadow: false ,
) ,
child: Padding (
padding: EdgeInsets . all ( 16. h ) ,
child: Row (
children: [
children: [
Utils . buildImgWithAssets (
Utils . buildSvgWithAssets (
icon: AppAssets . babyGirlImg ,
icon: AppAssets . latest_news_icon ,
height: 28. h ,
width: 32. w ,
width: 28. w ,
height: 32. h ,
border: 1 ,
fit: BoxFit . contain ,
borderRadius: 50. r ,
) ,
Utils . buildImgWithAssets (
icon: AppAssets . femaleImg ,
height: 28. h ,
width: 28. w ,
border: 1 ,
borderRadius: 50. r ,
fit: BoxFit . contain ,
) ,
Utils . buildImgWithAssets (
icon: AppAssets . maleImg ,
height: 28. h ,
width: 28. w ,
border: 1 ,
borderRadius: 50. r ,
fit: BoxFit . contain ,
fit: BoxFit . contain ,
) ,
) ,
SizedBox ( width: 8. w ) ,
" Latest News " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
] ,
) ,
) ,
Spacer ( ) ,
) ,
CustomButton (
height: 40. h ,
icon: AppAssets . add_icon ,
iconSize: 16. w ,
iconColor: AppColors . primaryRedColor ,
textColor: AppColors . primaryRedColor ,
text: " Add Member " . needTranslation ,
borderWidth: 0. w ,
fontWeight: FontWeight . w500 ,
borderColor: Colors . transparent ,
backgroundColor: AppColors . primaryRedColor . withValues ( alpha: 0.08 ) ,
padding: EdgeInsets . all ( 8. w ) ,
fontSize: 12. f ,
onPressed: ( ) {
DialogService dialogService = getIt . get < DialogService > ( ) ;
medicalFileViewModel . clearAuthValues ( ) ;
dialogService . showAddFamilyFileSheet (
label: " Add Family Member " . needTranslation ,
message: " Please fill the below field to add a new family member to your profile " . needTranslation ,
onVerificationPress: ( ) {
medicalFileViewModel . addFamilyFile ( otpTypeEnum: OTPTypeEnum . sms ) ;
} ) ;
} ,
) ,
] ,
) . onPress ( ( ) {
) . onPress ( ( ) {
Navigator . of ( context ) . push (
Utils . openWebView (
CustomPageRoute (
url: ' https://x.com/HMG ' ,
page: MedicalFilePage ( ) ,
) ,
) ;
) ;
} ) ,
} ) ,
) ,
) ,
) ,
SizedBox ( width: 16. w ) ,
] ,
Expanded (
) ,
child: Container (
SizedBox ( height: 24. h ) ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
" Health Tools " . needTranslation . toText18 ( isBold: true ) ,
color: AppColors . whiteColor ,
SizedBox ( height: 16. h ) ,
borderRadius: 12. h ,
GridView . builder (
hasShadow: false ,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount (
crossAxisCount: ( isFoldable | | isTablet ) ? 6 : 4 , / / 4 icons per row
crossAxisSpacing: 12. w ,
mainAxisSpacing: 18. h ,
childAspectRatio: 0.8 ,
) ,
physics: NeverScrollableScrollPhysics ( ) ,
shrinkWrap: true ,
itemCount: hmgHealthToolServices . length ,
padding: EdgeInsets . zero ,
itemBuilder: ( BuildContext context , int index ) {
return ServiceGridViewItem (
hmgHealthToolServices [ index ] ,
index ,
false ,
isHealthToolIcon: true ,
) ;
} ,
) ,
SizedBox ( height: 24. h ) ,
" Support Services " . needTranslation . toText18 ( isBold: true ) ,
SizedBox ( height: 16. h ) ,
Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
children: [
Expanded (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 12. h ,
hasShadow: false ,
) ,
child: Padding (
padding: EdgeInsets . all ( 16. h ) ,
child: Row (
children: [
Utils . buildSvgWithAssets (
icon: AppAssets . virtual_tour_icon ,
width: 32. w ,
height: 32. h ,
fit: BoxFit . contain ,
) ,
SizedBox ( width: 8. w ) ,
" Virtual Tour " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
) ,
) ,
) . onPress ( ( ) {
Utils . openWebView (
url: ' https://hmgwebservices.com/vt_mobile/html/index.html ' ,
) ;
} ) ,
) ,
SizedBox ( width: 16. w ) ,
Expanded (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 12. h ,
hasShadow: false ,
) ,
child: Padding (
padding: EdgeInsets . all ( 16. h ) ,
child: Row (
children: [
Utils . buildSvgWithAssets (
icon: AppAssets . car_parking_icon ,
width: 32. w ,
height: 32. h ,
fit: BoxFit . contain ,
) ,
SizedBox ( width: 8. w ) ,
" Car Parking " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
) ,
) ,
) ,
) ,
) ,
child: Padding (
] ,
padding: EdgeInsets . all ( 16. h ) ,
) ,
child: Row (
SizedBox ( height: 16. h ) ,
children: [
Row (
Utils . buildSvgWithAssets (
children: [
icon: AppAssets . hmg_contact_icon ,
Expanded (
width: 32. w ,
child: Container (
height: 32. h ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
fit: BoxFit . contain ,
color: AppColors . whiteColor ,
) ,
borderRadius: 12. h ,
SizedBox ( width: 8. w ) ,
hasShadow: false ,
" HMG Contact " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
) ,
] ,
child: Padding (
padding: EdgeInsets . all ( 16. h ) ,
child: Row (
children: [
Utils . buildSvgWithAssets (
icon: AppAssets . latest_news_icon ,
width: 32. w ,
height: 32. h ,
fit: BoxFit . contain ,
) ,
SizedBox ( width: 8. w ) ,
" Latest News " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
) ,
) ,
) . onPress ( ( ) {
Utils . openWebView (
url: ' https://x.com/HMG ' ,
) ;
} ) ,
) ,
SizedBox ( width: 16. w ) ,
Expanded (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 12. h ,
hasShadow: false ,
) ,
child: Padding (
padding: EdgeInsets . all ( 16. h ) ,
child: Row (
children: [
Utils . buildSvgWithAssets (
icon: AppAssets . hmg_contact_icon ,
width: 32. w ,
height: 32. h ,
fit: BoxFit . contain ,
) ,
SizedBox ( width: 8. w ) ,
" HMG Contact " . needTranslation . toText12 ( fontWeight: FontWeight . w500 )
] ,
) ,
) ,
) ,
) .onPress ( ( ) {
) ,
showCommonBottomSheetWithoutHeight (
) . onPress ( ( ) {
context ,
showCommonBottomSheetWithoutHeight (
title: LocaleKeys . contactUs . tr ( ) ,
context ,
child: ContactUs ( ) ,
title: LocaleKeys . contactUs . tr ( ) ,
callBackFunc: ( ) { } ,
child: ContactUs ( ) ,
isFullScreen: false ,
callBackFunc: ( ) { } ,
) ;
isFullScreen: false ,
}) ,
) ;
)
} ) ,
],
)
)
] ,
],
)
) ,
] ,
SizedBox ( height: 24. h ) ,
) . paddingSymmetrical ( 24. w , 0 ) ,
] ,
SizedBox ( height: 24. h ) ,
) ,
] ,
) ,
) ,
) ,
) ,
) ;
) ;