Sfoglia il codice sorgente

update ios system volume view

cjl_macbook 6 anni fa
parent
commit
1009f49cf9

+ 4 - 4
example/ios/Podfile.lock

@@ -9,8 +9,8 @@ PODS:
 
 DEPENDENCIES:
   - Flutter (from `.symlinks/flutter/ios`)
-  - flutter_ijkplayer (from `/Users/cai/Documents/GitHub/flutter_ijkplayer/ios/flutter_ijkplayer.podspec`)
-  - photo_manager (from `/Users/cai/.pub-cache/hosted/pub.flutter-io.cn/photo_manager-0.3.3/ios/photo_manager.podspec`)
+  - flutter_ijkplayer (from `/Users/caijinglong/Documents/GitHub/flutter_ijkplayer/ios/flutter_ijkplayer.podspec`)
+  - photo_manager (from `/Users/caijinglong/.pub-cache/hosted/pub.flutter-io.cn/photo_manager-0.3.3/ios/photo_manager.podspec`)
 
 SPEC REPOS:
   https://github.com/cocoapods/specs.git:
@@ -20,9 +20,9 @@ EXTERNAL SOURCES:
   Flutter:
     :path: ".symlinks/flutter/ios"
   flutter_ijkplayer:
-    :path: "/Users/cai/Documents/GitHub/flutter_ijkplayer/ios/flutter_ijkplayer.podspec"
+    :path: "/Users/caijinglong/Documents/GitHub/flutter_ijkplayer/ios/flutter_ijkplayer.podspec"
   photo_manager:
-    :path: "/Users/cai/.pub-cache/hosted/pub.flutter-io.cn/photo_manager-0.3.3/ios/photo_manager.podspec"
+    :path: "/Users/caijinglong/.pub-cache/hosted/pub.flutter-io.cn/photo_manager-0.3.3/ios/photo_manager.podspec"
 
 SPEC CHECKSUMS:
   Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a

+ 3 - 3
example/pubspec.lock

@@ -80,7 +80,7 @@ packages:
       name: pedantic
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   photo:
     dependency: "direct main"
     description:
@@ -113,7 +113,7 @@ packages:
       name: source_span
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.5.5"
+    version: "1.5.4"
   stack_trace:
     dependency: transitive
     description:
@@ -164,4 +164,4 @@ packages:
     source: hosted
     version: "2.0.8"
 sdks:
-  dart: ">=2.2.0 <3.0.0"
+  dart: ">=2.1.0 <3.0.0"

+ 3 - 1
ios/Classes/CoolFlutterIjkManager.h

@@ -19,7 +19,9 @@
 
 - (CoolFlutterIJK *)findIJKWithId:(int64_t)id1;
 
+- (int) ijkCount;
+
 - (void)disposeWithId:(int64_t)id;
 
 - (void)disposeAll;
-@end
+@end

+ 8 - 1
ios/Classes/CoolFlutterIjkManager.m

@@ -36,6 +36,13 @@
     return dict[@(id)];
 }
 
+- (int)ijkCount{
+    if(!dict){
+        return 0;
+    }
+    return [dict count];
+}
+
 - (void)disposeWithId:(int64_t)id {
     CoolFlutterIJK *ijk = dict[@(id)];
     if (ijk) {
@@ -52,4 +59,4 @@
         [ijk dispose];
     }
 }
-@end
+@end

+ 17 - 10
ios/Classes/IjkplayerPlugin.m

@@ -23,7 +23,6 @@ static IjkplayerPlugin *__sharedInstance;
     return __sharedInstance;
 }
 
-
 - (instancetype)initWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
     self = [super init];
     if (self) {
@@ -61,13 +60,16 @@ static IjkplayerPlugin *__sharedInstance;
             @catch (NSException *exception) {
                 result([FlutterError errorWithCode:@"1" message:@"创建失败" details:exception]);
             }
+            [self checkVolumeViewShouldShow];
         } else if ([@"dispose" isEqualToString:call.method]) {
             NSDictionary *params = [call arguments];
             int id = [params[@"id"] intValue];
             [self->manager disposeWithId:id];
+            [self checkVolumeViewShouldShow];
             result(@(YES));
         } else if ([@"init" isEqualToString:call.method]) {
             [self->manager disposeAll];
+            [self checkVolumeViewShouldShow];
             result(@YES);
         } else if ([@"setSystemVolume" isEqualToString:call.method]) {
             NSDictionary *params = [call arguments];
@@ -138,6 +140,19 @@ static IjkplayerPlugin *__sharedInstance;
             }
         }
     }
+    
+    UIWindow *window = UIApplication.sharedApplication.keyWindow;
+    [window addSubview:volumeView];
+}
+
+- (void) checkVolumeViewShouldShow{
+    int count = [manager ijkCount];
+    if (count>0){
+        [self initVolumeView];
+    }else{
+        [volumeView removeFromSuperview];
+        volumeView = nil;
+    }
 }
 
 - (void)setSystemVolume:(int)volume {
@@ -145,11 +160,6 @@ static IjkplayerPlugin *__sharedInstance;
 
     float targetVolume = ((float) volume) / 100;
 
-    if(volumeView && !volumeView.superview){
-        UIWindow *window = UIApplication.sharedApplication.keyWindow;
-        [window addSubview:volumeView];
-    }
-
     if (targetVolume > 1){
         targetVolume = 1;
     } else if(targetVolume < 0){
@@ -166,10 +176,7 @@ static IjkplayerPlugin *__sharedInstance;
 }
 
 -(void) hideSystemVolumeBar {
-    if(volumeView && volumeView.superview) {
-        [volumeView removeFromSuperview];
-        volumeView = nil;
-    }
+    
 }
 
 @end

+ 14 - 6
lib/src/widget/controller_widget_builder.dart

@@ -265,13 +265,20 @@ class _DefaultControllerWidgetState extends State<DefaultControllerWidget>
     if (targetSeek < videoInfo.duration) await controller.play();
   }
 
-  void _onVerticalDragStart(DragStartDetails details) {}
+  bool verticalDraging = false;
+
+  void _onVerticalDragStart(DragStartDetails details) {
+    print("drag start dx = ${details.globalPosition.dx}");
+    verticalDraging = true;
+  }
 
   void _onVerticalDragUpdate(DragUpdateDetails details) async {
+    if (verticalDraging == false) return;
+
     if (details.delta.dy > 0) {
-      volumeDown();
+      await volumeDown();
     } else if (details.delta.dy < 0) {
-      volumeUp();
+      await volumeUp();
     }
 
     var currentVolume = await getVolume();
@@ -294,12 +301,13 @@ class _DefaultControllerWidgetState extends State<DefaultControllerWidget>
     showTooltip(createTooltipWidgetWrapper(column));
   }
 
-  void _onVerticalDragEnd(DragEndDetails details) {
+  void _onVerticalDragEnd(DragEndDetails details) async {
+    verticalDraging = false;
     hideTooltip();
-    controller.hideSystemVolumeBar();
 
-    Future.delayed(Duration(seconds: 2), () {
+    Future.delayed(const Duration(milliseconds: 2000), () {
       hideTooltip();
+      controller.hideSystemVolumeBar();
     });
   }