Explorar o código

Fix: Do not initiate video_player if widget is not mounted

Neeraj Gupta hai 1 ano
pai
achega
6c2cd31e8b
Modificáronse 1 ficheiros con 7 adicións e 2 borrados
  1. 7 2
      lib/ui/viewer/file/video_widget.dart

+ 7 - 2
lib/ui/viewer/file/video_widget.dart

@@ -123,10 +123,16 @@ class _VideoWidgetState extends State<VideoWidget> {
     super.dispose();
   }
 
-  VideoPlayerController _setVideoPlayerController({
+  void _setVideoPlayerController({
     String? url,
     io.File? file,
   }) {
+    if (!mounted) {
+      // Note: Do not initiale video player if widget is not mounted.
+      // On Android, if multiple instance of ExoPlayer is created, it will start
+      // resulting in playback errors for videos. See https://github.com/google/ExoPlayer/issues/6168
+      return;
+    }
     VideoPlayerController videoPlayerController;
     if (url != null) {
       videoPlayerController = VideoPlayerController.network(url);
@@ -156,7 +162,6 @@ class _VideoWidgetState extends State<VideoWidget> {
           }
         },
       );
-    return videoPlayerController;
   }
 
   @override