|
|
|
|
@ -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(
|
|
|
|
|
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)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|