From 75ba1283d3066aa14b1ae28d333021e8f13e4089 Mon Sep 17 00:00:00 2001 From: sultan khan Date: Wed, 5 Feb 2025 10:39:03 +0300 Subject: [PATCH] event activity page added. --- assets/langs/ar-SA.json | 4 +- assets/langs/en-US.json | 4 +- lib/config/routes.dart | 4 + lib/generated/codegen_loader.g.dart | 8 +- lib/generated/locale_keys.g.dart | 3 +- lib/models/dashboard/event_activity.dart | 11 +- lib/ui/landing/dashboard_screen.dart | 6 +- lib/ui/landing/event_activity_banner.dart | 340 ++++-------------- .../widgets/countdown_timer_main_screen.dart | 18 +- .../event_activity/activity_event_card.dart | 112 ++++++ .../event_activity/activity_footer.dart | 39 ++ .../event_activity/event_activity.dart | 49 +++ 12 files changed, 303 insertions(+), 295 deletions(-) create mode 100644 lib/ui/screens/event_activity/activity_event_card.dart create mode 100644 lib/ui/screens/event_activity/activity_footer.dart create mode 100644 lib/ui/screens/event_activity/event_activity.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 1eb7dde..c4c5f20 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -613,5 +613,7 @@ "manageGroup": "إدارة المجموعة", "members": "الأعضاء", "searchByUserName": "البحث بواسطة اسم المستخدم", - "shareScreen": "مشاركة الشاشة" + "shareScreen": "مشاركة الشاشة", + "start":"يبدأ", + "about":"عن" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 03ae4d6..559b9c9 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -611,5 +611,7 @@ "qtyOrdered": "Qty. Ordered", "qtyReceived": "Qty. Received", "bonusQty": "Bonus Qty.", - "balQty": "Bal. Qty." + "balQty": "Bal. Qty.", + "start":"Start", + "about":"About" } \ No newline at end of file diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 6afc095..4653880 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -56,6 +56,7 @@ import 'package:mohem_flutter_app/ui/screens/announcements/announcements.dart'; import 'package:mohem_flutter_app/ui/screens/child_education/child_education_assistance.dart'; // import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart'; import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart'; +import 'package:mohem_flutter_app/ui/screens/event_activity/event_activity.dart'; import 'package:mohem_flutter_app/ui/screens/items_for_sale/add_new_item_for_sale.dart'; import 'package:mohem_flutter_app/ui/screens/items_for_sale/item_for_sale_detail.dart'; import 'package:mohem_flutter_app/ui/screens/items_for_sale/items_for_sale_home.dart'; @@ -208,6 +209,8 @@ class AppRoutes { static const String appUpdateScreen = "/appUpdateScreen"; static const String childEducation = "/childEducation"; + static const String activityScreen = "/activityScreen"; + static final Map routes = { login: (BuildContext context) => LoginScreen(), verifyLogin: (BuildContext context) => VerifyLoginScreen(), @@ -325,5 +328,6 @@ class AppRoutes { unsafeDeviceScreen: (BuildContext context) => const UnsafeDeviceScreen(), appUpdateScreen: (BuildContext context) => const AppUpdateScreen(), childEducation: (BuildContext context) => ChildEducationAssistance(), + activityScreen:(BuildContext context) => const EventActivityScreen() }; } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 36d809d..0e2cfbf 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -626,7 +626,9 @@ class CodegenLoader extends AssetLoader{ "manageGroup": "إدارة المجموعة", "members": "الأعضاء", "searchByUserName": "البحث بواسطة اسم المستخدم", - "shareScreen": "مشاركة الشاشة" + "shareScreen": "مشاركة الشاشة", + "start":"يبدأ", + "about":"عن" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1240,7 +1242,9 @@ static const Map en_US = { "qtyOrdered": "Qty. Ordered", "qtyReceived": "Qty. Received", "bonusQty": "Bonus Qty.", - "balQty": "Bal. Qty." + "balQty": "Bal. Qty.", + "start":"Start", + "about":"About" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 851a5cd..f8bc858 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -597,5 +597,6 @@ abstract class LocaleKeys { static const members = 'members'; static const searchByUserName = 'searchByUserName'; static const shareScreen = 'shareScreen'; - + static const start = 'start'; + static const about ='about'; } diff --git a/lib/models/dashboard/event_activity.dart b/lib/models/dashboard/event_activity.dart index e7e821c..4b523d7 100644 --- a/lib/models/dashboard/event_activity.dart +++ b/lib/models/dashboard/event_activity.dart @@ -1,4 +1,4 @@ -class EventActivityList { + class EventActivityList { EventActivityList({ required this.id, required this.titleEn, @@ -16,6 +16,8 @@ class EventActivityList { required this.createdOn, required this.modifiedBy, required this.modifiedOn, + required this.shortImageURL, + required this.detailImageURL }); final int? id; @@ -34,7 +36,8 @@ class EventActivityList { final String? createdOn; final String? modifiedBy; final String? modifiedOn; - + final String? shortImageURL; + final String? detailImageURL; factory EventActivityList.fromJson(Map json) { return EventActivityList( id: json["ID"], @@ -53,6 +56,8 @@ class EventActivityList { createdOn: json["CreatedOn"], modifiedBy: json["ModifiedBy"], modifiedOn: json["ModifiedOn"], + shortImageURL: json["ShortImageURL"], + detailImageURL: json["DetailImageURL"] ); } @@ -73,5 +78,7 @@ class EventActivityList { "CreatedOn": createdOn, "ModifiedBy": modifiedBy, "ModifiedOn": modifiedOn, + "DetailImageURL": detailImageURL, + "ShortImageURL" : shortImageURL }; } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 67e748c..4640c25 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -712,9 +712,9 @@ class _DashboardScreenState extends State with WidgetsBindingOb Widget eventActivityWidget(BuildContext context) { return (context.watch().isEventLoadingLoading) ? const MarathonBannerShimmer().paddingOnly(left: 21, right: 21, bottom: 21, top: 0) - : context.watch().eventActivity == null - ? const SizedBox() - : const EventActivityBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 0); + : (context.watch().eventActivity != null && context.watch().eventActivity!.isActive ==true) + ? const EventActivityBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 0) + : const SizedBox(); } void navigateToDetails(OffersListModel offersListModelObj) { diff --git a/lib/ui/landing/event_activity_banner.dart b/lib/ui/landing/event_activity_banner.dart index 83c58dd..47c8158 100644 --- a/lib/ui/landing/event_activity_banner.dart +++ b/lib/ui/landing/event_activity_banner.dart @@ -19,170 +19,11 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer_main_scree import 'package:mohem_flutter_app/widgets/glowy_borders/glowy_borders.dart'; import 'package:provider/provider.dart'; -// It is used to pass a dummy time to test Marathon int dummyTime = DateTime.now().millisecondsSinceEpoch + 8690; class EventActivityBanner extends StatelessWidget { const EventActivityBanner({Key? key}) : super(key: key); - // Widget getUnPrivilegedMarathon(BuildContext context) { - // return Container( - // decoration: MyDecorations.shadowDecoration, - // height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, - // clipBehavior: Clip.antiAlias, - // child: Stack( - // children: [ - // Transform( - // alignment: Alignment.center, - // transform: Matrix4.rotationY( - // AppState().isArabic(context) ? math.pi : 0, - // ), - // child: SvgPicture.asset( - // "assets/images/marathon_banner_bg.svg", - // fit: BoxFit.fill, - // width: double.infinity, - // ), - // ), - // AppState().isArabic(context) - // ? Positioned( - // right: -15, - // top: -10, - // child: Transform.rotate( - // angle: 10, - // child: Container( - // width: isTablet ? 70 : 65, - // height: isTablet ? 40 : 32, - // color: MyColors.darkDigitColor, - // ), - // ), - // ) - // : Positioned( - // left: -20, - // top: -10, - // child: Transform.rotate( - // angle: 15, - // child: Container( - // width: isTablet ? 70 : 65, - // height: isTablet ? 40 : 32, - // color: MyColors.darkDigitColor, - // ), - // ), - // ), - // SizedBox( - // width: double.infinity, - // height: double.infinity, - // child: Row( - // children: [ - // const Expanded( - // flex: 3, - // child: SizedBox( - // width: double.infinity, - // height: double.infinity, - // ), - // ), - // Expanded( - // flex: AppState().isArabic(context) ? 4 : 5, - // child: SizedBox( - // width: double.infinity, - // height: double.infinity, - // child: Row( - // mainAxisAlignment: MainAxisAlignment.start, - // children: [ - // Column( - // mainAxisAlignment: MainAxisAlignment.center, - // crossAxisAlignment: CrossAxisAlignment.start, - // mainAxisSize: MainAxisSize.min, - // children: [ - // AppState().isArabic(context) ? 0.height : 5.height, - // Text( - // LocaleKeys.getReadyForContest.tr(), - // style: TextStyle( - // fontSize: isTablet ? 20 : 11, - // fontStyle: FontStyle.italic, - // fontWeight: FontWeight.w600, - // color: MyColors.white.withOpacity(0.83), - // letterSpacing: -0.4, - // ), - // ), - // Text( - // LocaleKeys.brainMarathon.tr(), - // style: TextStyle( - // fontStyle: FontStyle.italic, - // fontSize: isTablet ? 30 : 19, - // fontWeight: FontWeight.bold, - // color: MyColors.white.withOpacity(0.83), - // height: 32 / 22, - // ), - // ), - // ], - // ).paddingOnly( - // left: AppState().isArabic(context) ? 12 : 3, - // right: AppState().isArabic(context) ? 3 : 12, - // ) - // ], - // ), - // ), - // ), - // ], - // ), - // ), - // AppState().isArabic(context) - // ? Align( - // alignment: Alignment.topRight, - // child: SizedBox( - // height: isTablet ? 30 : 20, - // width: isTablet ? 45 : 35, - // child: Transform.rotate( - // angle: math.pi / 4.5, - // child: Text( - // LocaleKeys.brainMarathon.tr(), - // textAlign: TextAlign.center, - // maxLines: 2, - // style: TextStyle( - // color: MyColors.white, - // fontWeight: FontWeight.bold, - // fontSize: isTablet ? 8 : 6, - // height: 1.2, - // ), - // ), - // ), - // ), - // ).paddingOnly(top: 5) - // : Align( - // alignment: Alignment.topLeft, - // child: SizedBox( - // height: isTablet ? 30 : 20, - // width: isTablet ? 45 : 35, - // child: Transform.rotate( - // angle: -math.pi / 4.5, - // child: Text( - // LocaleKeys.brainMarathon.tr(), - // textAlign: TextAlign.center, - // maxLines: 2, - // style: TextStyle( - // color: MyColors.kWhiteColor, - // fontWeight: FontWeight.bold, - // fontSize: isTablet ? 8 : 6, - // height: 1.2, - // ), - // ), - // ), - // ), - // ).paddingOnly(top: 5), - // Container( - // height: double.infinity, - // width: double.infinity, - // color: Colors.black.withOpacity(0.6), - // child: const Icon( - // Icons.lock_rounded, - // color: MyColors.lightGreyIconColor, - // ), - // ), - // ], - // ), - // ); - // } - Widget getNoUpcomingMarathonWidget(BuildContext context) { return Container( decoration: MyDecorations.shadowDecoration, @@ -348,7 +189,7 @@ class EventActivityBanner extends StatelessWidget { Widget build(BuildContext context) { DashboardProviderModel dashboardProvider = context.read(); - return Container( + return SizedBox( // decoration: BoxDecoration( // color: MyColors.kWhiteColor, // borderRadius: BorderRadius.circular(8), @@ -384,52 +225,46 @@ class EventActivityBanner extends StatelessWidget { children: [ // Transform( // alignment: Alignment.center, - // transform: Matrix4.rotationY( - // AppState().isArabic(context) ? math.pi : 0, - // ), - // child: SvgPicture.asset( - // "assets/images/marathon_banner_bg.svg", - // fit: BoxFit.fill, - // width: double.infinity, - // ), - // ), - // AppState().isArabic(context) - // ? Positioned( - // right: -15, - // top: -10, - // child: Transform.rotate( - // angle: 10, - // child: Container( - // width: isTablet ? 70 : 65, - // height: isTablet ? 40 : 32, - // color: MyColors.darkDigitColor, - // ), - // ), - // ) - // : Positioned( - // left: -20, - // top: -10, - // child: Transform.rotate( - // angle: 15, - // child: Container( - // width: isTablet ? 70 : 65, - // height: isTablet ? 40 : 32, - // color: MyColors.darkDigitColor, - // ), - // ), - // ), + // // transform: Matrix4.rotationY( + // // AppState().isArabic(context) ? math.pi : 0, + // // ), + // child: + // + + AppState().isArabic(context) + ? Positioned( + left: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: SizedBox( + child: SvgPicture.asset( + "assets/images/light_bulb.svg"), + ), + ), + ) + : Positioned( + right: 0, + top: 10, + child: Opacity( + opacity: .5, + child: SvgPicture.asset( + "assets/images/light_bulb.svg", + ), + )), + SizedBox( width: double.infinity, height: double.infinity, child: Row( children: [ - const Expanded( - flex: 3, - child: SizedBox( - width: double.infinity, - height: double.infinity, - ), - ), + Expanded( + flex: 3, + child: Image.network( + dashboardProvider.eventActivity?.shortImageURL ?? + "", + fit: BoxFit.cover, + )), Expanded( flex: AppState().isArabic(context) ? 4 : 5, child: SizedBox( @@ -444,16 +279,7 @@ class EventActivityBanner extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ AppState().isArabic(context) ? 0.height : 5.height, - Text( - LocaleKeys.getReadyForContest.tr(), - style: TextStyle( - fontSize: isTablet ? 20 : 11, - fontStyle: FontStyle.italic, - fontWeight: FontWeight.w600, - color: MyColors.white.withOpacity(0.83), - letterSpacing: -0.4, - ), - ), + Flexible( child: Text( displayLocalizedContent( @@ -465,17 +291,33 @@ class EventActivityBanner extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontStyle: FontStyle.italic, - fontSize: isTablet ? 30 : 19, + fontSize: isTablet ? 25 : 16, fontWeight: FontWeight.bold, - color: MyColors.white.withOpacity(0.83), - height: 32 / 22, + color: MyColors.white, + height: 32 / 24, ), ), + ), Text( + displayLocalizedContent( + isPhoneLangArabic: AppState().isArabic(context), + selectedLanguage: 3, + englishContent: dashboardProvider.eventActivity?.shortDescEn ?? "", + arabicContent: dashboardProvider.eventActivity?.shortDescAr ?? "", + ), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white, + letterSpacing: -0.5, + ), ), - isTablet ? 10.height : 3.height, + + isTablet ? 15.height : 10.height, CountdownTimerForMainScreen( timeToMarathon: DateUtil.convertStringToDateMarathon(dashboardProvider.eventActivity!.startOn!).millisecondsSinceEpoch, provider: context.read(), + isEvent: true, ), ], ).paddingOnly( @@ -489,49 +331,7 @@ class EventActivityBanner extends StatelessWidget { ], ), ), - // AppState().isArabic(context) - // ? Align( - // alignment: Alignment.topRight, - // child: SizedBox( - // height: isTablet ? 30 : 20, - // width: isTablet ? 45 : 35, - // child: Transform.rotate( - // angle: math.pi / 4.5, - // child: Text( - // LocaleKeys.brainMarathon.tr(), - // textAlign: TextAlign.center, - // maxLines: 2, - // style: TextStyle( - // color: MyColors.white, - // fontWeight: FontWeight.bold, - // fontSize: isTablet ? 8 : 6, - // height: 1.2, - // ), - // ), - // ), - // ), - // ).paddingOnly(top: 5) - // : Align( - // alignment: Alignment.topLeft, - // child: SizedBox( - // height: isTablet ? 30 : 20, - // width: isTablet ? 45 : 35, - // child: Transform.rotate( - // angle: -math.pi / 4.5, - // child: Text( - // LocaleKeys.brainMarathon.tr(), - // textAlign: TextAlign.center, - // maxLines: 2, - // style: TextStyle( - // color: MyColors.kWhiteColor, - // fontWeight: FontWeight.bold, - // fontSize: isTablet ? 8 : 6, - // height: 1.2, - // ), - // ), - // ), - // ), - // ).paddingOnly(top: 5), + !AppState().isArabic(context) ? Positioned( right: 0, @@ -551,25 +351,11 @@ class EventActivityBanner extends StatelessWidget { ), ], ).onPress(() async { - // int remainingTimeInMinutes = DateTime.parse(dashboardProvider.eventActivity!.startOn!).difference(DateTime.now()).inMinutes; - // if (remainingTimeInMinutes > 5 && dashboardProvider.eventActivity.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) { - // Utils.showLoading(context); - // try { - // await provider.initializeVideoPlayer().then((_) { - // Utils.hideLoading(context); - // provider.startTimerForSponsorVideo(); - // Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); - // }); - // } catch (e) { - // if (kDebugMode) { - // log("Error in VideoPlayer: ${e.toString()}"); - // } - // Utils.hideLoading(context); - // Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - // } - // } else { - // Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - // } + int remainingTimeInMinutes = DateUtil.convertStringToDateMarathon(dashboardProvider.eventActivity!.startOn!).difference(DateTime.now()).inMinutes; + if (remainingTimeInMinutes < 0) { + Navigator.pushNamed(context, AppRoutes.activityScreen); + + } // provider.updateLanguageAsPerMarathon(context, provider.isUpComingMarathon ? provider.marathonDetailModel : provider.demoMarathonDetailModel); })), ), diff --git a/lib/ui/marathon/widgets/countdown_timer_main_screen.dart b/lib/ui/marathon/widgets/countdown_timer_main_screen.dart index ef828da..e9818c2 100644 --- a/lib/ui/marathon/widgets/countdown_timer_main_screen.dart +++ b/lib/ui/marathon/widgets/countdown_timer_main_screen.dart @@ -13,19 +13,15 @@ import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; class CountdownTimerForMainScreen extends StatelessWidget { final int timeToMarathon; final MarathonProvider provider; - + final bool isEvent; CountdownTimerForMainScreen({ Key? key, required this.provider, required this.timeToMarathon, + this.isEvent =false, }) : super(key: key); - final TextStyle styleTextHome = TextStyle( - color: MyColors.white.withOpacity(0.45), - fontStyle: FontStyle.italic, - fontWeight: FontWeight.w800, - letterSpacing: -0.4, - ); + final TextStyle styleDigitHome = TextStyle( height: 22 / 27, @@ -75,7 +71,13 @@ class CountdownTimerForMainScreen extends StatelessWidget { text, minFontSize: 7, maxFontSize: 8, - style: styleTextHome, + style: TextStyle( + color: isEvent ? MyColors.white : MyColors.white.withOpacity(0.45), + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w800, + letterSpacing: -0.4, + ), + ); } diff --git a/lib/ui/screens/event_activity/activity_event_card.dart b/lib/ui/screens/event_activity/activity_event_card.dart new file mode 100644 index 0000000..5c02971 --- /dev/null +++ b/lib/ui/screens/event_activity/activity_event_card.dart @@ -0,0 +1,112 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:provider/provider.dart'; +import 'package:shimmer/shimmer.dart'; + +class ActivityEventDetailsCard extends StatelessWidget { + final DashboardProviderModel model; + + const ActivityEventDetailsCard({Key? key, required this.model}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + decoration: MyDecorations.shadowDecoration, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CachedNetworkImage( + imageUrl: model.eventActivity!.detailImageURL!, + placeholder: (BuildContext context, String url) => const LinearProgressIndicator( + value: 0.7, + minHeight: 200, + valueColor: AlwaysStoppedAnimation(Colors.white), + backgroundColor: Color(0xff196D73), + ).toShimmer(), + fit: BoxFit.cover,width: double.infinity , + ), + + ], + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 20,), + Text( + displayLocalizedContent( + isPhoneLangArabic: AppState().isArabic(context), + selectedLanguage: 3, + englishContent: model.eventActivity?.titleEn ?? "", + arabicContent: model.eventActivity?.titleAr ?? "", + ), + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 20, + fontWeight: FontWeight.bold, + color:const Color(0xff3C3838), + // height: 42 / 30, + ), + + ).paddingOnly(left: 10, right: 10, bottom: 2), + + Row(children:[ + SvgPicture.asset("assets/images/highlight.svg"), + Text( + displayLocalizedContent( + isPhoneLangArabic: AppState().isArabic(context), + selectedLanguage: 3, + englishContent: model.eventActivity?.shortDescEn ?? "", + arabicContent: model.eventActivity?.shortDescAr ?? "", + ), + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 20 : 14, + fontWeight: FontWeight.bold, + color:const Color(0xff2BB8A8), + // height: 32 / 24, + ), + + ).paddingOnly(left: 10, right: 10) + ]).paddingOnly(bottom: 25), + + LocaleKeys.about.tr().toText16(color: const Color(0xff3C3838)).paddingOnly(bottom: 5), + Text( + displayLocalizedContent( + isPhoneLangArabic: AppState().isArabic(context), + selectedLanguage: 3, + englishContent: model.eventActivity?.longDescEn ?? "", + arabicContent: model.eventActivity?.longDescAr ?? "", + ), + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 18 : 12, + fontWeight: FontWeight.bold, + color:const Color(0xff3C3838), + // height: 32 / 24, + ), + + ).paddingOnly(bottom: 10) + ], + ) + ]); + } +} diff --git a/lib/ui/screens/event_activity/activity_footer.dart b/lib/ui/screens/event_activity/activity_footer.dart new file mode 100644 index 0000000..a5fcd81 --- /dev/null +++ b/lib/ui/screens/event_activity/activity_footer.dart @@ -0,0 +1,39 @@ +// ignore_for_file: always_specify_types + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class ActivityEventFooter extends StatelessWidget { + final DashboardProviderModel provider; + + const ActivityEventFooter({ + Key? key, + required this.provider, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column(children: [ + DefaultButton( + LocaleKeys.start.tr(), + () => launchUrl(Uri.parse(provider.eventActivity!.url!)), + color: MyColors.greenColor, + ).insideContainer, + + ]); + + } + + +} diff --git a/lib/ui/screens/event_activity/event_activity.dart b/lib/ui/screens/event_activity/event_activity.dart new file mode 100644 index 0000000..f523eb6 --- /dev/null +++ b/lib/ui/screens/event_activity/event_activity.dart @@ -0,0 +1,49 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_details_card.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_footer.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_timer_card.dart'; +import 'package:mohem_flutter_app/ui/screens/event_activity/activity_event_card.dart'; +import 'package:mohem_flutter_app/ui/screens/event_activity/activity_footer.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:provider/provider.dart'; + +class EventActivityScreen extends StatelessWidget { + const EventActivityScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + DashboardProviderModel provider = context.read(); + return Scaffold( + appBar: AppBarWidget( + context, + title: LocaleKeys.details.tr(), + onHomeTapped: () { + Navigator.pop(context); + + }, + onBackTapped: () { + Navigator.pop(context); + }, + ), + body: Column( + children: [ + ListView( + padding: const EdgeInsets.all(21), + children: [ + ActivityEventDetailsCard(model: provider), + 20.height, + ], + ).expanded, + 1.divider, + ActivityEventFooter(provider: provider), + ], + ), + ); + } +}