浏览代码

Surface video playback error on UI (#1189)

Neeraj Gupta 2 年之前
父节点
当前提交
d0cf8165db
共有 2 个文件被更改,包括 23 次插入3 次删除
  1. 20 2
      lib/ui/viewer/file/video_widget.dart
  2. 3 1
      lib/utils/dialog_util.dart

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

@@ -12,6 +12,7 @@ import 'package:photos/models/file.dart';
 import 'package:photos/services/files_service.dart';
 import 'package:photos/services/files_service.dart';
 import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
 import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
 import 'package:photos/ui/viewer/file/video_controls.dart';
 import 'package:photos/ui/viewer/file/video_controls.dart';
+import "package:photos/utils/dialog_util.dart";
 import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/toast_util.dart';
 import 'package:photos/utils/toast_util.dart';
 import 'package:video_player/video_player.dart';
 import 'package:video_player/video_player.dart';
@@ -135,12 +136,29 @@ class _VideoWidgetState extends State<VideoWidget> {
     } else {
     } else {
       videoPlayerController = VideoPlayerController.file(file!);
       videoPlayerController = VideoPlayerController.file(file!);
     }
     }
-    return _videoPlayerController = videoPlayerController
+
+    debugPrint("videoPlayerController: $videoPlayerController");
+    _videoPlayerController = videoPlayerController
       ..initialize().whenComplete(() {
       ..initialize().whenComplete(() {
         if (mounted) {
         if (mounted) {
           setState(() {});
           setState(() {});
         }
         }
-      });
+      }).onError(
+        (error, stackTrace) {
+          if (mounted) {
+            if (error is Exception) {
+              showErrorDialogForException(
+                context: context,
+                exception: error,
+                message: "Failed to play video\n ${error.toString()}",
+              );
+            } else {
+              showToast(context, "Failed to play video");
+            }
+          }
+        },
+      );
+    return videoPlayerController;
   }
   }
 
 
   @override
   @override

+ 3 - 1
lib/utils/dialog_util.dart

@@ -46,8 +46,10 @@ Future<ButtonResult?> showErrorDialogForException({
   required Exception exception,
   required Exception exception,
   bool isDismissible = true,
   bool isDismissible = true,
   String apiErrorPrefix = "It looks like something went wrong.",
   String apiErrorPrefix = "It looks like something went wrong.",
+  String? message,
 }) async {
 }) async {
-  String errorMessage = S.of(context).tempErrorContactSupportIfPersists;
+  String errorMessage =
+      message ?? S.of(context).tempErrorContactSupportIfPersists;
   if (exception is DioError &&
   if (exception is DioError &&
       exception.response != null &&
       exception.response != null &&
       exception.response!.data["code"] != null) {
       exception.response!.data["code"] != null) {