diff --git a/assets/images/svg/fb.svg b/assets/images/svg/fb.svg new file mode 100644 index 00000000..972aac93 --- /dev/null +++ b/assets/images/svg/fb.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/svg/linkedin.svg b/assets/images/svg/linkedin.svg new file mode 100644 index 00000000..43d7ff39 --- /dev/null +++ b/assets/images/svg/linkedin.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/svg/twitter.svg b/assets/images/svg/twitter.svg new file mode 100644 index 00000000..9c5bfa6b --- /dev/null +++ b/assets/images/svg/twitter.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/twitter2.svg b/assets/images/svg/twitter2.svg new file mode 100644 index 00000000..e804498a --- /dev/null +++ b/assets/images/svg/twitter2.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/youtube.svg b/assets/images/svg/youtube.svg new file mode 100644 index 00000000..5e83e5a4 --- /dev/null +++ b/assets/images/svg/youtube.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 0407bd0f..24a7286b 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1803,5 +1803,10 @@ "networkErrorWhileFetching": "حدث خطأ أثناء تحميل البيانات. يرجى المحاولة مجدداً.", "networkPleaseCheckInternet": "يرجى التحقق من اتصالك بالإنترنت والمحاولة مجدداً.", "networkServerErrorNoMessage": "حدث خطأ في الخادم. يرجى المحاولة لاحقاً.", - "startLiveChat": "بدء المحادثة المباشرة" + "startLiveChat": "بدء المحادثة المباشرة", + "followUsOn": "تابعنا على:", + "followUsOnX": "تابعنا على X", + "likeUsOnFB": "سجل إعجابك بنا على فيسبوك", + "watchUsOnYoutube": "شاهدنا على إنستغرام", + "connectOnLinkedin": "تواصل معنا على لينكد إن" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 92a5f20c..d970d44b 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1793,7 +1793,12 @@ "networkErrorWhileFetching": "Something went wrong while loading data. Please try again.", "networkPleaseCheckInternet": "Please check your internet connection and try again.", "networkServerErrorNoMessage": "A server error occurred. Please try again later.", - "startLiveChat": "Start Live Chat" + "startLiveChat": "Start Live Chat", + "followUsOn": "Follow us on:", + "followUsOnX": "Follow us on X", + "likeUsOnFB": "Like us on Facebook", + "watchUsOnYoutube": "Watch us on Instagram", + "connectOnLinkedin": "Connect on LinkedIn" } diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 215b2421..1b0013f1 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -21,6 +21,11 @@ class AppAssets { static const String report = '$svgBasePath/report.svg'; static const String sucess = '$svgBasePath/sucess.svg'; static const String livechatMessage = '$svgBasePath/live_chat_message_icon.svg'; + static const String fb = '$svgBasePath/fb.svg'; + static const String linkedin = '$svgBasePath/linkedin.svg'; + static const String youtube = '$svgBasePath/youtube.svg'; + static const String x = '$svgBasePath/twitter.svg'; + static const String x2 = '$svgBasePath/twitter2.svg'; // static const String globeOther = '$svgBasePath/globe_other.svg'; static const String cancel = '$svgBasePath/cancel.svg'; diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index ecb4c9e6..b2d2eed1 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1788,6 +1788,11 @@ abstract class LocaleKeys { static const selectBloodDonationGender = 'selectBloodDonationGender'; static const selectBloodType = 'selectBloodType'; static const startLiveChat = 'startLiveChat'; + static const followUsOn = 'followUsOn'; + static const followUsOnX = 'followUsOnX'; + static const likeUsOnFB = 'likeUsOnFB'; + static const watchUsOnYoutube = 'watchUsOnYoutube'; + static const connectOnLinkedin = 'connectOnLinkedin'; static const networkErrorTitle = 'networkErrorTitle'; static const networkErrorMessage = 'networkErrorMessage'; static const networkConnectionReset = 'networkConnectionReset'; diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index af6672ea..827ff8c7 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -45,6 +45,7 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../core/dependencies.dart' show getIt; import '../../features/qr_parking/qr_parking_view_model.dart'; @@ -375,6 +376,52 @@ class _ServicesPageState extends State { ), ]; + late final List socialLinkedinMessage = [ + HmgServicesComponentModel( + 101, + LocaleKeys.followUsOnX.tr(), + "", + AppAssets.x, + bgColor: AppColors.whiteColor, + true, + route: null, + onTap: () async { + launchUrl(Uri.parse("https://twitter.com/HMG")); + }, + ), + HmgServicesComponentModel( + 102, + LocaleKeys.likeUsOnFB.tr(), + "", + AppAssets.fb, + bgColor: AppColors.whiteColor, + true, + route: null, // Set to null since we handle navigation in onTap + onTap: () async { + launchUrl(Uri.parse("https://www.facebook.com/DrSulaimanAlHabib?ref=tn_tnmn")); + }, + ), + HmgServicesComponentModel( + 103, + LocaleKeys.watchUsOnYoutube.tr(), + "", + AppAssets.youtube, + bgColor: AppColors.whiteColor, + true, + onTap:()=> launchUrl(Uri.parse("https://www.youtube.com/c/DrsulaimanAlhabibHospitals")) + ), + HmgServicesComponentModel( + 104, + LocaleKeys.connectOnLinkedin.tr(), + "", + AppAssets.linkedin, + bgColor: AppColors.whiteColor, + true, + onTap:()=> launchUrl(Uri.parse("https://www.linkedin.com/company/drsulaiman-alhabib-medical-group")), + ), + + ]; + @override void initState() { // TODO: implement initState @@ -840,6 +887,27 @@ class _ServicesPageState extends State { ) ], ).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), + GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row + crossAxisSpacing: 21.w, + mainAxisSpacing: 18.h, + childAspectRatio: 80.w / 94.h, + ), + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: socialLinkedinMessage.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return ServiceGridViewItem( + socialLinkedinMessage[index], + index, + false, + isHealthToolIcon: true, + ); + }, + ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), ], ), diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index be7ddb54..16c2a383 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -346,6 +346,8 @@ class ProfileSettingsState extends State { url: 'https://hmg.com/en/Pages/Terms.aspx', ); }, isExternalLink: true), + 1.divider, + socialMedia(AppAssets.privacy_terms, LocaleKeys.followUsOn.tr(context: context)), ], ), ), @@ -420,6 +422,30 @@ class ProfileSettingsState extends State { ).paddingOnly(left: 16.w, right: 16.w).onPress(onPress), ); } + + Widget socialMedia(String icon, String label, + ) { + return SizedBox( + height: 56.h, + child: Row( + spacing: 8.w, + children: [ + Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.greyTextColor), + label.toText14(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + + Row( + spacing: 24.w, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.x2).onPress(()=> launchUrl(Uri.parse("https://twitter.com/HMG"))), + Utils.buildSvgWithAssets(icon: AppAssets.fb).onPress(()=> launchUrl(Uri.parse("https://www.facebook.com/DrSulaimanAlHabib?ref=tn_tnmn"))), + Utils.buildSvgWithAssets(icon: AppAssets.linkedin).onPress(()=> launchUrl(Uri.parse("https://www.linkedin.com/company/drsulaiman-alhabib-medical-group"))), + Utils.buildSvgWithAssets(icon: AppAssets.youtube).onPress(()=> launchUrl(Uri.parse("https://www.youtube.com/c/DrsulaimanAlhabibHospitals"))), + ], + ) + ], + ).paddingOnly(left: 16.w, right: 16.w), + ); + } } class FamilyCardWidget extends StatefulWidget {