Advertisement Image/ Video Module

merge-requests/69/head
Aamir Muhammad 3 years ago
parent db3e1427c5
commit fa7e08c215

@ -186,4 +186,18 @@ class DashboardApiClient {
); );
return chatUnreadCovnCountModelFromJson(response.body); return chatUnreadCovnCountModelFromJson(response.body);
} }
// Future setAdvertisementViewed(String masterID, int advertisementId) async {
// String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed";
//
// Map<String, dynamic> postParams = {
// "ItgNotificationMasterId": masterID,
// "ItgAdvertisement": {"advertisementId": advertisementId, "acknowledgment": true} //Mobile Id
// };
// postParams.addAll(AppState().postParamsJson);
// return await ApiClient().postJsonForObject((json) {
// // ItgMainRes responseData = ItgMainRes.fromJson(json);
// return json;
// }, url, postParams);
// }
} }

@ -100,41 +100,39 @@ class _DashboardScreenState extends State<DashboardScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
key: _scaffoldState, key: _scaffoldState,
appBar: AppBar( // appBar: AppBar(
actions: [ // actions: [
IconButton( // IconButton(
onPressed: () { // onPressed: () {
data.getITGNotification().then((value) { // data.getITGNotification().then((val) {
if (value!.result!.data != null) { // if (val!.result!.data != null) {
if (value.result!.data!.notificationType == "Survey") { // if (val.result!.data!.notificationType == "Survey") {
Navigator.pushNamed(context, AppRoutes.survey, arguments: value.result!.data); // Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data);
} else { // } else {
DashboardApiClient().getAdvertisementDetail(value.result!.data!.notificationMasterId ?? "").then( // DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then(
(value) { // (value) {
if (value!.mohemmItgResponseItem!.statusCode == 200) { // if (value!.mohemmItgResponseItem!.statusCode == 200) {
if (value.mohemmItgResponseItem!.result!.data != null) { // if (value.mohemmItgResponseItem!.result!.data != null) {
String? rFile = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.base64String; // Navigator.push(
String? rFileExt = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.fileName; // context,
Navigator.push( // MaterialPageRoute(
context, // builder: (BuildContext context) => ITGAdsScreen(
MaterialPageRoute( // addMasterId: val.result!.data!.notificationMasterId!,
builder: (BuildContext context) => ITGAdsScreen( // advertisement: value.mohemmItgResponseItem!.result!.data!.advertisement!,
encodedBytes: rFile!, // ),
fileExtenshion: rFileExt!, // ),
), // );
), // }
); // }
} // },
} // );
}, // }
); // }
} // });
} // },
}); // icon: Icon(Icons.add))
}, // ],
icon: Icon(Icons.add)) // ),
],
),
body: Column( body: Column(
children: [ children: [
Row( Row(

@ -2,17 +2,20 @@ import 'dart:convert';
import 'dart:io' as Io; import 'dart:io' as Io;
import 'dart:io'; import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.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/colors.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'; import 'package:path_provider/path_provider.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
class ITGAdsScreen extends StatefulWidget { class ITGAdsScreen extends StatefulWidget {
final String encodedBytes; final String addMasterId;
final String fileExtension; final ads.Advertisement advertisement;
const ITGAdsScreen({required this.encodedBytes, required this.fileExtension}); const ITGAdsScreen({required this.addMasterId, required this.advertisement});
@override @override
_ITGAdsScreenState createState() => _ITGAdsScreenState(); _ITGAdsScreenState createState() => _ITGAdsScreenState();
@ -22,10 +25,39 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> {
late Future<VideoPlayerController> _futureController; late Future<VideoPlayerController> _futureController;
late VideoPlayerController _controller; late VideoPlayerController _controller;
bool skip = false; bool skip = false;
bool isVideo = false;
bool isImage = false;
String ext = '';
late File imageFile;
void checkFileType() async {
String? rFile = widget.advertisement!.viewAttachFileColl!.first.base64String;
String? rFileExt = widget.advertisement!.viewAttachFileColl!.first.fileName;
ext = "." + rFileExt!.split(".").last.toLowerCase();
if (ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif") {
await processImage(rFile!);
isImage = true;
} else {
isVideo = true;
_futureController = createVideoPlayer(rFile!);
}
setState(() {});
}
Future processImage(String encodedBytes) async {
try {
Uint8List decodedBytes = base64Decode(encodedBytes.split("base64,").last);
Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1
imageFile = Io.File("${appDocumentsDirectory.path}/addImage$ext");
imageFile.writeAsBytesSync(decodedBytes);
} catch (e) {
logger.d(e);
}
}
Future<VideoPlayerController> createVideoPlayer() async { Future<VideoPlayerController> createVideoPlayer(String encodedBytes) async {
try { try {
Uint8List decodedBytes = base64Decode(widget.encodedBytes.split("base64,").last); Uint8List decodedBytes = base64Decode(encodedBytes.split("base64,").last);
Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1 Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1
File file = Io.File("${appDocumentsDirectory.path}/myAdsVideo.mp4"); File file = Io.File("${appDocumentsDirectory.path}/myAdsVideo.mp4");
file.writeAsBytesSync(decodedBytes); file.writeAsBytesSync(decodedBytes);
@ -40,55 +72,15 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> {
} }
} }
void checkType(){
// getFileTypeDescription(value);
}
String getFileTypeDescription(String value) {
switch (value) {
case ".pdf":
return "application/pdf";
case ".png":
return "image/png";
case ".txt":
return "text/plain";
case ".jpg":
return "image/jpg";
case ".jpeg":
return "image/jpeg";
case ".ppt":
return "application/vnd.openxmlformats-officedocument.presentationml.presentation";
case ".pptx":
return "application/vnd.openxmlformats-officedocument.presentationml.presentation";
case ".doc":
return "application/vnd.openxmlformats-officedocument.wordprocessingm";
case ".docx":
return "application/vnd.openxmlformats-officedocument.wordprocessingm";
case ".xls":
return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
case ".xlsx":
return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
case ".zip":
return "application/octet-stream";
case ".rar":
return "application/octet-stream";
default:
return "";
}
}
@override @override
void initState() { void initState() {
_futureController = createVideoPlayer(); checkFileType();
initTimer(); initTimer();
super.initState(); super.initState();
} }
void initTimer() { void initTimer() {
Future.delayed(const Duration(milliseconds: 500), () { Future.delayed(const Duration(seconds: 5), () {
setState(() { setState(() {
skip = true; skip = true;
}); });
@ -107,28 +99,34 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> {
return Scaffold( return Scaffold(
body: Column( body: Column(
children: [ children: [
SizedBox( if (isVideo)
height: MediaQuery.of(context).size.height * .3, SizedBox(
child: FutureBuilder( height: MediaQuery.of(context).size.height * .3,
future: _futureController, child: FutureBuilder(
builder: (BuildContext context, AsyncSnapshot<Object?> snapshot) { future: _futureController,
if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { builder: (BuildContext context, AsyncSnapshot<Object?> snapshot) {
_controller = snapshot.data as VideoPlayerController; if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) {
return AspectRatio( _controller = snapshot.data as VideoPlayerController;
aspectRatio: _controller.value.aspectRatio, return AspectRatio(
child: VideoPlayer(_controller), aspectRatio: _controller.value.aspectRatio,
); child: VideoPlayer(_controller),
} else { );
return const Center( } else {
child: CircularProgressIndicator(), return const Center(
); child: CircularProgressIndicator(),
} );
}, }
},
),
), ),
), if (isImage) Image.file(imageFile),
if (skip) if (skip)
ElevatedButton( ElevatedButton(
onPressed: () {}, onPressed: () async {
// DashboardApiClient().setAdvertisementViewed(widget.addMasterId, widget.advertisement!.advertisementId!).then((value) {
// logger.d(value);
// });
},
child: const Text("Go To Dashboard"), child: const Text("Go To Dashboard"),
) )
], ],

Loading…
Cancel
Save