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

Wyświetl plik

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