Rumahjo-Android-APP/lib/utils/VideoPlayer/video_player_widget.dart

89 lines
2.4 KiB
Dart
Raw Normal View History

2024-09-07 00:58:50 +00:00
import 'package:ebroker/utils/VideoPlayer/ytb.dart';
import 'package:ebroker/utils/helper_utils.dart';
import 'package:flick_video_player/flick_video_player.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
class VideoPlayerWideget extends StatefulWidget {
final String url;
final EdgeInsetsGeometry? padding;
const VideoPlayerWideget({super.key, required this.url, this.padding});
@override
State<VideoPlayerWideget> createState() => _VideoPlayerWidegetState();
}
class _VideoPlayerWidegetState extends State<VideoPlayerWideget> {
YoutubeExplode youtubeExplode = YoutubeExplode();
String? url;
getYoutubeVideo(url) async {
try {
Video video = await youtubeExplode.videos.get(url);
StreamManifest manifest =
await youtubeExplode.videos.streams.getManifest(video.id.value);
MuxedStreamInfo videoQuality =
manifest.muxed.sortByVideoQuality().bestQuality;
print("QUALITY IS ${videoQuality.url}");
url = videoQuality.url.toString();
_flickmanager = FlickManager(
autoPlay: false,
videoPlayerController:
VideoPlayerController.networkUrl(videoQuality.url));
setState(() {});
} catch (e) {
print("ISSU IS $e");
}
}
Future getYoutubeVideoQualityUrls() async {
Video? video =
await YtbRepo().getVideoMetadata("https://youtu.be/lSf5ThEETPk");
List<Map> list = await YtbRepo().getMuxed(video.id.value);
print("List map is $list");
}
bool isYoutube(String url) {
return HelperUtils.isYoutubeVideo(url);
}
FlickManager? _flickmanager;
@override
void initState() {
if (isYoutube(widget.url)) {
getYoutubeVideo(widget.url);
} else {
_flickmanager = FlickManager(
autoPlay: false,
videoPlayerController:
VideoPlayerController.networkUrl(Uri.parse(widget.url)));
setState(() {});
}
super.initState();
}
@override
void dispose() {
_flickmanager?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (_flickmanager != null) {
return Padding(
padding: widget.padding ?? EdgeInsets.zero,
child: FlickVideoPlayer(
flickManager: _flickmanager!,
),
);
}
return Container(
height: 0,
);
}
}