Bläddra i källkod

更新了左半部分修改亮度的手势

cjl_macbook 6 år sedan
förälder
incheckning
f8ff012e49
1 ändrade filer med 47 tillägg och 12 borttagningar
  1. 47 12
      lib/src/widget/controller_widget_builder.dart

+ 47 - 12
lib/src/widget/controller_widget_builder.dart

@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
 import 'package:flutter_ijkplayer/src/helper/time_helper.dart';
 import 'package:flutter_ijkplayer/src/helper/logutil.dart';
+import 'package:flutter_ijkplayer/src/helper/ui_helper.dart';
 import 'package:flutter_ijkplayer/src/widget/progress_bar.dart';
 
 /// Using mediaController to Construct a Controller UI
@@ -47,7 +48,8 @@ class DefaultControllerWidget extends StatefulWidget {
     this.horizontalGesture = true,
     this.volumeType = VolumeType.system,
     this.playWillPauseOther = true,
-  });
+    Key key,
+  }) : super(key: key);
 
   @override
   _DefaultControllerWidgetState createState() =>
@@ -58,6 +60,8 @@ class _DefaultControllerWidgetState extends State<DefaultControllerWidget>
     implements TooltipDelegate {
   IjkMediaController get controller => widget.controller;
 
+  GlobalKey currentKey = GlobalKey();
+
   bool _isShow = true;
 
   set isShow(bool value) {
@@ -132,6 +136,7 @@ class _DefaultControllerWidgetState extends State<DefaultControllerWidget>
       onVerticalDragUpdate: wrapVerticalGesture(_onVerticalDragUpdate),
       onVerticalDragEnd: wrapVerticalGesture(_onVerticalDragEnd),
       onTap: onTap,
+      key: currentKey,
     );
   }
 
@@ -266,34 +271,64 @@ class _DefaultControllerWidgetState extends State<DefaultControllerWidget>
   }
 
   bool verticalDraging = false;
+  bool leftVerticalDrag;
 
   void _onVerticalDragStart(DragStartDetails details) {
-    print("drag start dx = ${details.globalPosition.dx}");
     verticalDraging = true;
+    var width = UIHelper.findGlobalRect(currentKey).width;
+    var dx =
+        UIHelper.globalOffsetToLocal(currentKey, details.globalPosition).dx;
+    leftVerticalDrag = dx / width <= 0.5;
   }
 
   void _onVerticalDragUpdate(DragUpdateDetails details) async {
     if (verticalDraging == false) return;
 
-    if (details.delta.dy > 0) {
-      await volumeDown();
-    } else if (details.delta.dy < 0) {
-      await volumeUp();
+    String text = "";
+    IconData iconData = Icons.volume_up;
+
+    if (leftVerticalDrag == false) {
+      if (details.delta.dy > 0) {
+        await volumeDown();
+      } else if (details.delta.dy < 0) {
+        await volumeUp();
+      }
+
+      var currentVolume = await getVolume();
+      text = currentVolume.toString();
+    } else if (leftVerticalDrag == true) {
+      var currentBright = await IjkManager.getSystemBrightness();
+      double target;
+      if (details.delta.dy > 0) {
+        target = currentBright - 0.05;
+      } else {
+        target = currentBright + 0.05;
+      }
+
+      if (target > 1) {
+        target = 1;
+      } else if (target < 0) {
+        target = 0;
+      }
+
+      await IjkManager.setSystemBrightness(target);
+
+      iconData = Icons.brightness_high;
+      text = (target * 100).toStringAsFixed(0);
+    } else {
+      return;
     }
-
-    var currentVolume = await getVolume();
-
     var column = Column(
       mainAxisAlignment: MainAxisAlignment.center,
       children: <Widget>[
         Icon(
-          Icons.volume_up,
+          iconData,
           color: Colors.white,
           size: 25.0,
         ),
         Padding(
           padding: const EdgeInsets.only(top: 10.0),
-          child: Text(currentVolume.toString()),
+          child: Text(text),
         ),
       ],
     );
@@ -303,11 +338,11 @@ class _DefaultControllerWidgetState extends State<DefaultControllerWidget>
 
   void _onVerticalDragEnd(DragEndDetails details) async {
     verticalDraging = false;
+    leftVerticalDrag = null;
     hideTooltip();
 
     Future.delayed(const Duration(milliseconds: 2000), () {
       hideTooltip();
-      controller.hideSystemVolumeBar();
     });
   }