diff --git a/lib/controls/audio_video/media_kit_av_control.dart b/lib/controls/audio_video/media_kit_av_control.dart index 01ad83a..08e9800 100644 --- a/lib/controls/audio_video/media_kit_av_control.dart +++ b/lib/controls/audio_video/media_kit_av_control.dart @@ -23,6 +23,7 @@ class _MediaKitAvControlState extends State { static final _logger = Logger('$MediaKitAvControl'); final player = Player(); VideoController? controller; + var needToOpen = true; @override void initState() { @@ -30,17 +31,10 @@ class _MediaKitAvControlState extends State { 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 { } 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(() {}); } diff --git a/lib/controls/audio_video/video_player_lib_av_control.dart b/lib/controls/audio_video/video_player_lib_av_control.dart index 26845d0..8981b45 100644 --- a/lib/controls/audio_video/video_player_lib_av_control.dart +++ b/lib/controls/audio_video/video_player_lib_av_control.dart @@ -22,14 +22,12 @@ class VideoPlayerLibAvControl extends StatefulWidget { class _VideoPlayerLibAvControlState extends State { 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 { super.deactivate(); } - void toggleVideoPlay() { + void toggleVideoPlay() async { + if (needsToLoad) { + await videoPlayerController.initialize(); + needsToLoad = false; + } videoPlayerController.value.isPlaying ? videoPlayerController.pause() : videoPlayerController.play();