Delay pre-loading of video

codemagic-setup
Hank Grabowski 2023-04-03 18:08:34 -04:00
rodzic df77a23452
commit 3b3a12c124
2 zmienionych plików z 16 dodań i 15 usunięć

Wyświetl plik

@ -23,6 +23,7 @@ class _MediaKitAvControlState extends State<MediaKitAvControl> {
static final _logger = Logger('$MediaKitAvControl');
final player = Player();
VideoController? controller;
var needToOpen = true;
@override
void initState() {
@ -30,17 +31,10 @@ class _MediaKitAvControlState extends State<MediaKitAvControl> {
Future.microtask(() async {
_logger.info('initializing');
controller = await VideoController.create(player.handle);
if (!context.mounted) {
return;
_logger.info('initialized');
if (context.mounted) {
setState(() {});
}
setState(() {});
_logger.info('opening player');
await player.open(Media(widget.videoUrl), play: false);
if (!context.mounted) {
return;
}
setState(() {});
_logger.info('done');
});
}
@ -60,6 +54,11 @@ class _MediaKitAvControlState extends State<MediaKitAvControl> {
}
void toggleVideoPlay() async {
_logger.fine('Toggling play on: ${widget.videoUrl}');
if (needToOpen) {
await player.open(Media(widget.videoUrl), play: false);
needToOpen = false;
}
player.playOrPause();
setState(() {});
}

Wyświetl plik

@ -22,14 +22,12 @@ class VideoPlayerLibAvControl extends StatefulWidget {
class _VideoPlayerLibAvControlState extends State<VideoPlayerLibAvControl> {
late final VideoPlayerController videoPlayerController;
var needsToLoad = true;
@override
void initState() {
super.initState();
videoPlayerController = VideoPlayerController.network(widget.videoUrl)
..initialize().then((_) {
setState(() {});
});
videoPlayerController = VideoPlayerController.network(widget.videoUrl);
}
@override
@ -44,7 +42,11 @@ class _VideoPlayerLibAvControlState extends State<VideoPlayerLibAvControl> {
super.deactivate();
}
void toggleVideoPlay() {
void toggleVideoPlay() async {
if (needsToLoad) {
await videoPlayerController.initialize();
needsToLoad = false;
}
videoPlayerController.value.isPlaying
? videoPlayerController.pause()
: videoPlayerController.play();