|  |  |  | @ -2,10 +2,15 @@ import 'dart:convert'; | 
		
	
		
			
				|  |  |  |  | import 'dart:io' as Io; | 
		
	
		
			
				|  |  |  |  | import 'dart:io'; | 
		
	
		
			
				|  |  |  |  | import 'dart:typed_data'; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | import 'package:flutter/material.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:just_audio/just_audio.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:flutter_countdown_timer/index.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/classes/colors.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/classes/utils.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/main.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/models/itg/advertisement.dart' as ads; | 
		
	
		
			
				|  |  |  |  | import 'package:path_provider/path_provider.dart'; | 
		
	
	
		
			
				
					|  |  |  | @ -29,6 +34,7 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> { | 
		
	
		
			
				|  |  |  |  |   ads.Advertisement? advertisementData; | 
		
	
		
			
				|  |  |  |  |   dynamic data; | 
		
	
		
			
				|  |  |  |  |   String? masterID; | 
		
	
		
			
				|  |  |  |  |   int videoDuration = 0; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   void checkFileType() async { | 
		
	
		
			
				|  |  |  |  |     String? rFile = advertisementData!.viewAttachFileColl!.first.base64String; | 
		
	
	
		
			
				
					|  |  |  | @ -42,7 +48,7 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> { | 
		
	
		
			
				|  |  |  |  |       _futureController = createVideoPlayer(rFile!); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     setState(() {}); | 
		
	
		
			
				|  |  |  |  |     initTimer(); | 
		
	
		
			
				|  |  |  |  |     // initTimer(); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   Future processImage(String encodedBytes) async { | 
		
	
	
		
			
				
					|  |  |  | @ -76,7 +82,7 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> { | 
		
	
		
			
				|  |  |  |  |   void initTimer() { | 
		
	
		
			
				|  |  |  |  |     Future.delayed(const Duration(seconds: 5), () { | 
		
	
		
			
				|  |  |  |  |       skip = true; | 
		
	
		
			
				|  |  |  |  |       setState(() {}); | 
		
	
		
			
				|  |  |  |  |       // setState(() {}); | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -93,9 +99,11 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> { | 
		
	
		
			
				|  |  |  |  |     if (masterID == null) masterID = data["masterId"]; | 
		
	
		
			
				|  |  |  |  |     if (advertisementData != null) { | 
		
	
		
			
				|  |  |  |  |       checkFileType(); | 
		
	
		
			
				|  |  |  |  |       videoDuration = advertisementData?.durationInSeconds ?? 0; | 
		
	
		
			
				|  |  |  |  |       print("VIDEO DURATION: $videoDuration"); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |    // double height = MediaQuery.of(context).size.height * .25; | 
		
	
		
			
				|  |  |  |  |     return Scaffold( | 
		
	
		
			
				|  |  |  |  |       backgroundColor: Colors.black, | 
		
	
		
			
				|  |  |  |  |       body: Stack( | 
		
	
		
			
				|  |  |  |  |         children: [ | 
		
	
		
			
				|  |  |  |  |           if (isVideo) | 
		
	
	
		
			
				
					|  |  |  | @ -104,11 +112,50 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> { | 
		
	
		
			
				|  |  |  |  |               builder: (BuildContext context, AsyncSnapshot<Object?> snapshot) { | 
		
	
		
			
				|  |  |  |  |                 if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { | 
		
	
		
			
				|  |  |  |  |                   _controller = snapshot.data as VideoPlayerController; | 
		
	
		
			
				|  |  |  |  |                   return Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                     child: AspectRatio( | 
		
	
		
			
				|  |  |  |  |                       aspectRatio: _controller.value.aspectRatio, | 
		
	
		
			
				|  |  |  |  |                       child: VideoPlayer(_controller), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   return Column( | 
		
	
		
			
				|  |  |  |  |                     mainAxisAlignment: MainAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                     children: [ | 
		
	
		
			
				|  |  |  |  |                       Center( | 
		
	
		
			
				|  |  |  |  |                         child: AspectRatio( | 
		
	
		
			
				|  |  |  |  |                           aspectRatio: _controller.value.aspectRatio, | 
		
	
		
			
				|  |  |  |  |                           child: VideoPlayer(_controller), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                       30.height, | 
		
	
		
			
				|  |  |  |  |                       CountdownTimer( | 
		
	
		
			
				|  |  |  |  |                         endTime: DateTime.now().millisecondsSinceEpoch + 1000 * videoDuration, | 
		
	
		
			
				|  |  |  |  |                         onEnd: null, | 
		
	
		
			
				|  |  |  |  |                         endWidget: "00:00:00".toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                         textStyle: const TextStyle(color: Colors.white, fontSize: 16, letterSpacing: -0.48, fontWeight: FontWeight.bold), | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                       50.height, | 
		
	
		
			
				|  |  |  |  |                       Container(padding: const EdgeInsets.all(16), decoration: Utils.containerRadius(MyColors.white, 10), child: const Icon(Icons.thumb_up, color: MyColors.gradiantEndColor)) | 
		
	
		
			
				|  |  |  |  |                           .onPress(() { | 
		
	
		
			
				|  |  |  |  |                         try { | 
		
	
		
			
				|  |  |  |  |                           DashboardApiClient().setAdvertisementViewed(masterID!, advertisementData!.advertisementId!).then((value) { | 
		
	
		
			
				|  |  |  |  |                             logger.d(value); | 
		
	
		
			
				|  |  |  |  |                             Navigator.pop(context); | 
		
	
		
			
				|  |  |  |  |                           }); | 
		
	
		
			
				|  |  |  |  |                         } catch (ex) { | 
		
	
		
			
				|  |  |  |  |                           logger.wtf(ex); | 
		
	
		
			
				|  |  |  |  |                           Utils.handleException(ex, context, null); | 
		
	
		
			
				|  |  |  |  |                         } | 
		
	
		
			
				|  |  |  |  |                       }), | 
		
	
		
			
				|  |  |  |  |                       // DefaultButton(LocaleKeys.home.tr(), () async { | 
		
	
		
			
				|  |  |  |  |                       //   DashboardApiClient().setAdvertisementViewed(masterID!, advertisementData!.advertisementId!).then((value) { | 
		
	
		
			
				|  |  |  |  |                       //     logger.d(value); | 
		
	
		
			
				|  |  |  |  |                       //   }); | 
		
	
		
			
				|  |  |  |  |                       // }).paddingOnly(left: 50, right: 50) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                       // ElevatedButton( | 
		
	
		
			
				|  |  |  |  |                       //   onPressed: () async { | 
		
	
		
			
				|  |  |  |  |                       //     // DashboardApiClient().setAdvertisementViewed(widget.addMasterId, widget.advertisement!.advertisementId!).then((value) { | 
		
	
		
			
				|  |  |  |  |                       //     //   logger.d(value); | 
		
	
		
			
				|  |  |  |  |                       //     // }); | 
		
	
		
			
				|  |  |  |  |                       //   }, | 
		
	
		
			
				|  |  |  |  |                       //   child: const Text("Go To Dashboard"), | 
		
	
		
			
				|  |  |  |  |                       // ) | 
		
	
		
			
				|  |  |  |  |                     ], | 
		
	
		
			
				|  |  |  |  |                   ); | 
		
	
		
			
				|  |  |  |  |                 } else { | 
		
	
		
			
				|  |  |  |  |                   return const Center( | 
		
	
	
		
			
				
					|  |  |  | @ -118,15 +165,7 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> { | 
		
	
		
			
				|  |  |  |  |               }, | 
		
	
		
			
				|  |  |  |  |             ), | 
		
	
		
			
				|  |  |  |  |           if (isImage) Image.file(imageFile), | 
		
	
		
			
				|  |  |  |  |           if (skip) | 
		
	
		
			
				|  |  |  |  |             ElevatedButton( | 
		
	
		
			
				|  |  |  |  |               onPressed: () async { | 
		
	
		
			
				|  |  |  |  |                 // DashboardApiClient().setAdvertisementViewed(widget.addMasterId, widget.advertisement!.advertisementId!).then((value) { | 
		
	
		
			
				|  |  |  |  |                 //   logger.d(value); | 
		
	
		
			
				|  |  |  |  |                 // }); | 
		
	
		
			
				|  |  |  |  |               }, | 
		
	
		
			
				|  |  |  |  |               child: const Text("Go To Dashboard"), | 
		
	
		
			
				|  |  |  |  |             ) | 
		
	
		
			
				|  |  |  |  |           // if (skip) | 
		
	
		
			
				|  |  |  |  |         ], | 
		
	
		
			
				|  |  |  |  |       ), | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
	
		
			
				
					|  |  |  | 
 |