Browse Source

强制切换全屏Example

Caijinglong 6 years ago
parent
commit
a690ebefca

+ 1 - 1
android/.settings/org.eclipse.buildship.core.prefs

@@ -1,2 +1,2 @@
-connection.project.dir=../example/android
+connection.project.dir=
 eclipse.preferences.version=1

+ 112 - 0
example/lib/page/full_screen.dart

@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
 
 class FullScreen extends StatefulWidget {
@@ -65,3 +66,114 @@ class _FullScreenState extends State<FullScreen> {
     );
   }
 }
+
+class FullScreen2 extends StatefulWidget {
+  @override
+  _FullScreen2State createState() => _FullScreen2State();
+}
+
+class _FullScreen2State extends State<FullScreen2> {
+  var controller = IjkMediaController();
+
+  Orientation get orientation => MediaQuery.of(context).orientation;
+  DataSource source = DataSource.network(
+    "https://www.sample-videos.com/video123/mp4/360/big_buck_bunny_360p_30mb.mp4",
+  );
+
+  @override
+  void initState() {
+    super.initState();
+    portraitUp();
+  }
+
+  @override
+  void dispose() {
+    controller.dispose();
+    unlockOrientation();
+    super.dispose();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    if (orientation == Orientation.landscape) {
+      return buildLandscape();
+    }
+    return buildNormal();
+  }
+
+  Widget buildLandscape() {
+    SystemChrome.setEnabledSystemUIOverlays([]);
+    return WillPopScope(
+      child: IjkPlayer(
+        mediaController: controller,
+      ),
+      onWillPop: () async {
+        if (orientation == Orientation.landscape) {
+          portraitUp();
+          return false;
+        }
+        return true;
+      },
+    );
+  }
+
+  Widget buildNormal() {
+    SystemChrome.setEnabledSystemUIOverlays([
+      SystemUiOverlay.top,
+      SystemUiOverlay.bottom,
+    ]);
+    return Scaffold(
+      appBar: AppBar(
+        title: Text("手动切换全屏(强制)"),
+      ),
+      body: ListView(
+        children: <Widget>[
+          AspectRatio(
+            aspectRatio: 1,
+            child: IjkPlayer(
+              mediaController: controller,
+              controllerWidgetBuilder: (ctl) {
+                return DefaultControllerWidget(
+                  controller: ctl,
+                  verticalGesture: false,
+                );
+              },
+            ),
+          ),
+          RaisedButton(
+            onPressed: () async {
+              await controller.setDataSource(source);
+              await controller.play();
+            },
+            child: Text("播放"),
+          ),
+          RaisedButton(
+            onPressed: setLandScapeLeft,
+            child: Text("全屏"),
+          ),
+        ],
+      ),
+    );
+  }
+
+  void setLandScapeLeft() async {
+    await SystemChrome.setPreferredOrientations(
+      [DeviceOrientation.landscapeLeft],
+    );
+  }
+
+  void portraitUp() async {
+    await SystemChrome.setPreferredOrientations([
+      DeviceOrientation.portraitUp,
+    ]);
+    await SystemChrome.restoreSystemUIOverlays();
+  }
+
+  void unlockOrientation() {
+    SystemChrome.setPreferredOrientations([
+      DeviceOrientation.landscapeLeft,
+      DeviceOrientation.landscapeRight,
+      DeviceOrientation.portraitUp,
+    ]);
+  }
+}

+ 2 - 1
example/lib/page/index.dart

@@ -23,7 +23,8 @@ class _IndexPageState extends State<IndexPage> {
           buildButton("播放相册视频", PlayGalleryPage()),
           buildButton("播放应用asset", AssetPage()),
           buildButton("ListView中插入视频(未完成)", VideoList()),
-          buildButton("全屏切换示例", FullScreen()),
+          buildButton("全屏切换示例(自动)", FullScreen()),
+          buildButton("全屏切换示例(手动)", FullScreen2()),
         ],
       ),
     );

+ 2 - 0
example/lib/page/network.dart

@@ -19,6 +19,8 @@ class _NetworkPageState extends State<NetworkPage> {
         "http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4";
     editingController.text =
         "http://172.16.100.245:5000/05-2%20ffmpeg%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8Log%E7%B3%BB%E7%BB%9F.mp4";
+    editingController.text =
+        "http://172.16.100.245:5000/09-01%20%E7%AC%AC%E4%B8%80%E4%B8%AAJNI%E7%A8%8B%E5%BA%8F.mp4";
   }
 
   @override