ソースを参照

切换全屏时:根据宽高比例决定是竖向全屏还是横向全屏

Caijinglong 6 年 前
コミット
78f0188910

+ 5 - 5
TODOLIST.md

@@ -49,11 +49,11 @@
   - [x] 允许根据情况禁用各种控制手势
   - [x] 当一个视频是直播视频时,进度条应该隐藏,且无拖动进度相关手势
   - [ ] 全屏切换
-    - [ ] UI(控制器 UI 内)
-    - [ ] android
-    - [ ] iOS
-    - [ ] 利用 ShowDialog 开发一个全屏的播放界面,不仅仅在 Example 中
-      - [ ] 根据屏幕宽高确定是横屏全屏还是竖屏全屏(比如:常规电影是横屏,类似抖音自拍之类的为竖屏)
+    - [x] UI(控制器 UI 内)
+    - [x] android
+    - [x] iOS
+    - [x] 利用 ShowDialog 开发一个全屏的播放界面,不仅仅在 Example 中
+      - [x] 根据屏幕宽高确定是横屏全屏还是竖屏全屏(比如:常规电影是横屏,常规自拍类视频为竖屏)
 - [x] 根据视频角度自动旋转
 - [x] 保证图片宽高比不失真
 - [x] 允许自定义控制器 UI

+ 5 - 0
lib/src/controller.dart

@@ -92,6 +92,10 @@ class IjkMediaController {
   /// video volume, not system volume
   int get volume => _volume;
 
+  VideoInfo _info = VideoInfo.fromMap(null);
+
+  VideoInfo get info => _info;
+
   /// create ijk texture id from native
   Future<void> _initIjk() async {
     try {
@@ -272,6 +276,7 @@ class IjkMediaController {
   /// request info and notify
   Future<void> refreshVideoInfo() async {
     var info = await getVideoInfo();
+    _info = info;
     isPlaying = info.isPlaying;
     if (info.hasData) {
       _videoInfoController?.add(info);

+ 1 - 0
lib/src/ijkplayer.dart

@@ -70,6 +70,7 @@ class IjkPlayerState extends State<IjkPlayer> {
         var id = snapshot.data;
         return StreamBuilder<VideoInfo>(
             stream: controller.videoInfoStream,
+            initialData: controller.info,
             builder: (context, videoInfoSnapShot) {
               return _buildTexture(id, videoInfoSnapShot.data);
             });

+ 10 - 2
lib/src/widget/controller_widget_builder.dart

@@ -630,9 +630,17 @@ showFullScreenIJKPlayer(
   if (info.width == 0 || info.height == 0) {
     axis = Axis.horizontal;
   } else if (info.width > info.height) {
-    axis = Axis.horizontal;
+    if (info.degree == 90 || info.degree == 270) {
+      axis = Axis.vertical;
+    } else {
+      axis = Axis.horizontal;
+    }
   } else {
-    axis = Axis.vertical;
+    if (info.degree == 90 || info.degree == 270) {
+      axis = Axis.horizontal;
+    } else {
+      axis = Axis.vertical;
+    }
   }
 
   if (axis == Axis.horizontal) {