Advertisement Image/ Video Module
parent
ed15ce92b6
commit
db3e1427c5
@ -0,0 +1,138 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io' as Io;
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
|
||||
class ITGAdsScreen extends StatefulWidget {
|
||||
final String encodedBytes;
|
||||
final String fileExtension;
|
||||
|
||||
const ITGAdsScreen({required this.encodedBytes, required this.fileExtension});
|
||||
|
||||
@override
|
||||
_ITGAdsScreenState createState() => _ITGAdsScreenState();
|
||||
}
|
||||
|
||||
class _ITGAdsScreenState extends State<ITGAdsScreen> {
|
||||
late Future<VideoPlayerController> _futureController;
|
||||
late VideoPlayerController _controller;
|
||||
bool skip = false;
|
||||
|
||||
Future<VideoPlayerController> createVideoPlayer() async {
|
||||
try {
|
||||
Uint8List decodedBytes = base64Decode(widget.encodedBytes.split("base64,").last);
|
||||
Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1
|
||||
File file = Io.File("${appDocumentsDirectory.path}/myAdsVideo.mp4");
|
||||
file.writeAsBytesSync(decodedBytes);
|
||||
VideoPlayerController controller = VideoPlayerController.file(file);
|
||||
await controller.initialize();
|
||||
await controller.play();
|
||||
await controller.setVolume(1.0);
|
||||
await controller.setLooping(false);
|
||||
return controller;
|
||||
} catch (e) {
|
||||
return new VideoPlayerController.asset("dataSource");
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
void initState() {
|
||||
_futureController = createVideoPlayer();
|
||||
initTimer();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void initTimer() {
|
||||
Future.delayed(const Duration(milliseconds: 500), () {
|
||||
setState(() {
|
||||
skip = true;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double height = MediaQuery.of(context).size.height * .25;
|
||||
return Scaffold(
|
||||
body: Column(
|
||||
children: [
|
||||
SizedBox(
|
||||
height: MediaQuery.of(context).size.height * .3,
|
||||
child: FutureBuilder(
|
||||
future: _futureController,
|
||||
builder: (BuildContext context, AsyncSnapshot<Object?> snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) {
|
||||
_controller = snapshot.data as VideoPlayerController;
|
||||
return AspectRatio(
|
||||
aspectRatio: _controller.value.aspectRatio,
|
||||
child: VideoPlayer(_controller),
|
||||
);
|
||||
} else {
|
||||
return const Center(
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
if (skip)
|
||||
ElevatedButton(
|
||||
onPressed: () {},
|
||||
child: const Text("Go To Dashboard"),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,96 +0,0 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io' as Io;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
|
||||
class MovieTheaterBody extends StatefulWidget {
|
||||
final String encodedBytes;
|
||||
|
||||
const MovieTheaterBody({required this.encodedBytes});
|
||||
|
||||
@override
|
||||
_MovieTheaterBodyState createState() => _MovieTheaterBodyState();
|
||||
}
|
||||
|
||||
class _MovieTheaterBodyState extends State<MovieTheaterBody> {
|
||||
late Future<VideoPlayerController> _futureController;
|
||||
late VideoPlayerController _controller;
|
||||
|
||||
Future<VideoPlayerController> createVideoPlayer() async {
|
||||
try {
|
||||
var decodedBytes = base64Decode(widget.encodedBytes);
|
||||
|
||||
var file = Io.File("decodedBezkoder.mp4");
|
||||
file.writeAsBytesSync(decodedBytes);
|
||||
|
||||
VideoPlayerController controller = VideoPlayerController.file(file);
|
||||
await controller.initialize();
|
||||
await controller.setLooping(true);
|
||||
return controller;
|
||||
} catch (e) {
|
||||
print("object0000000");
|
||||
print(e);
|
||||
return new VideoPlayerController.asset("dataSource");
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_futureController = createVideoPlayer();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Expanded(
|
||||
child: FutureBuilder(
|
||||
future: _futureController,
|
||||
builder: (context, snapshot) {
|
||||
//UST: 05/2021 - MovieTheaterBody - id:11 - 2pts - Criação
|
||||
if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) {
|
||||
_controller = snapshot.data as VideoPlayerController;
|
||||
return Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
AspectRatio(
|
||||
aspectRatio: _controller.value.aspectRatio,
|
||||
child: VideoPlayer(_controller),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
FloatingActionButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
if (_controller.value.isPlaying) {
|
||||
_controller.pause();
|
||||
} else {
|
||||
// If the video is paused, play it.
|
||||
_controller.play();
|
||||
}
|
||||
});
|
||||
},
|
||||
backgroundColor: Colors.green[700],
|
||||
child: Icon(
|
||||
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
} else {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue