From 70861807c562ce33210ee8eabaf5174206a34d97 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 24 Jan 2023 16:17:32 +0300 Subject: [PATCH] Resolved VideoPlayer Bug on IOS --- .../marathon_sponsor_video_screen.dart | 91 ++++++++++--------- lib/ui/marathon/widgets/marathon_banner.dart | 2 +- 2 files changed, 50 insertions(+), 43 deletions(-) diff --git a/lib/ui/marathon/marathon_sponsor_video_screen.dart b/lib/ui/marathon/marathon_sponsor_video_screen.dart index 0bd8a1b..6b5c4eb 100644 --- a/lib/ui/marathon/marathon_sponsor_video_screen.dart +++ b/lib/ui/marathon/marathon_sponsor_video_screen.dart @@ -17,14 +17,14 @@ class SponsorVideoScreen extends StatelessWidget { @override Widget build(BuildContext context) { - MarathonProvider provider = context.watch(); + MarathonProvider provider = context.read(); return WillPopScope( onWillPop: () { + provider.timerForSponsorVideo.cancel(); provider.videoController.pause(); provider.disposeVideoPlayer(); provider.sponsorsSecondsCounter = 0; provider.totalSponsorVideoSeconds = 0; - provider.timerForSponsorVideo.cancel(); return Future.value(true); }, child: Scaffold( @@ -49,49 +49,56 @@ class SponsorVideoScreen extends StatelessWidget { borderRadius: provider.totalSponsorVideoSeconds == 0 ? null : BorderRadius.circular(15), ), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: provider.totalSponsorVideoSeconds == 0 - ? InkWell( - onTap: () { - Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); - provider.videoController.pause(); - provider.disposeVideoPlayer(); - provider.sponsorsSecondsCounter = 0; - provider.totalSponsorVideoSeconds = 0; - provider.timerForSponsorVideo.cancel(); - }, - child: const Icon(Icons.close, size: 12), - ) - : Directionality( - textDirection: ui.TextDirection.ltr, - child: ("${LocaleKeys.ourSponsor.tr()} ${provider.totalSponsorVideoSeconds < 10 ? "0" : ""}${provider.totalSponsorVideoSeconds}").toText12(color: MyColors.darkTextColor), - ), + child: Consumer( + builder: (BuildContext context, MarathonProvider provider, Widget? child) { + return provider.totalSponsorVideoSeconds == 0 + ? InkWell( + onTap: () { + Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); + provider.videoController.pause(); + provider.disposeVideoPlayer(); + provider.sponsorsSecondsCounter = 0; + provider.totalSponsorVideoSeconds = 0; + provider.timerForSponsorVideo.cancel(); + }, + child: const Icon(Icons.close, size: 12), + ) + : Directionality( + textDirection: ui.TextDirection.ltr, + child: ("${LocaleKeys.ourSponsor.tr()} ${provider.totalSponsorVideoSeconds < 10 ? "0" : ""}${provider.totalSponsorVideoSeconds}").toText12(color: MyColors.darkTextColor), + ); + }, + ), ), ).paddingOnly(top: 20, right: 18), - - //TODO: WE WILL INCREASE THIS 2 BEFORE GOING LIVE - provider.sponsorsSecondsCounter >= 2 - ? Align( - alignment: Alignment.topLeft, - child: InkWell( - onTap: () { - Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); - provider.videoController.pause(); - provider.disposeVideoPlayer(); - provider.sponsorsSecondsCounter = 0; - provider.totalSponsorVideoSeconds = 0; - provider.timerForSponsorVideo.cancel(); - }, - child: Container( - decoration: BoxDecoration(color: MyColors.white, borderRadius: BorderRadius.circular(15)), - padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 6), - child: Directionality( - textDirection: ui.TextDirection.ltr, - child: LocaleKeys.skip.tr().toText11(color: MyColors.darkTextColor), + Consumer( + builder: (BuildContext context, MarathonProvider provider, Widget? child) { + //TODO: WE WILL INCREASE THIS 2 BEFORE GOING LIVE + return provider.sponsorsSecondsCounter >= 2 + ? Align( + alignment: Alignment.topLeft, + child: InkWell( + onTap: () { + Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); + provider.videoController.pause(); + provider.disposeVideoPlayer(); + provider.sponsorsSecondsCounter = 0; + provider.totalSponsorVideoSeconds = 0; + provider.timerForSponsorVideo.cancel(); + }, + child: Container( + decoration: BoxDecoration(color: MyColors.white, borderRadius: BorderRadius.circular(15)), + padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 6), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: LocaleKeys.skip.tr().toText11(color: MyColors.darkTextColor), + ), + ), ), - ), - ), - ).paddingOnly(top: 20, left: 18) - : const SizedBox(), + ).paddingOnly(top: 20, left: 18) + : const SizedBox(); + }, + ), ], ), ), diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index f6adff6..223fb2c 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -523,7 +523,7 @@ class MarathonBanner extends StatelessWidget { ).onPress(() async { int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; - if (remainingTimeInMinutes > 2 && provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) { + if (remainingTimeInMinutes > 5 && provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) { Utils.showLoading(context); try { await provider.initializeVideoPlayer().then((_) {