Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在不失去控制焦点的情况下向视频播放器添加双击手势?_Flutter_Dart_Flutter Dependencies_Flutter Video Player - Fatal编程技术网

Flutter 如何在不失去控制焦点的情况下向视频播放器添加双击手势?

Flutter 如何在不失去控制焦点的情况下向视频播放器添加双击手势?,flutter,dart,flutter-dependencies,flutter-video-player,Flutter,Dart,Flutter Dependencies,Flutter Video Player,我用包装纸试过了 return ClipRRect( borderRadius: BorderRadius.circular(30.0), child: Chewie( controller: _chewieController, ) 与 现在我可以双击,但只需一次点击,控制器就不会出现,有什么方法可以同时实现这两个目标吗。 通过双击,我可以调用like函数,通过onTap显示控制器。 上面

我用包装纸试过了

return ClipRRect(
            borderRadius: BorderRadius.circular(30.0),
            child: Chewie(
              controller: _chewieController,
            )

现在我可以双击,但只需一次点击,控制器就不会出现,有什么方法可以同时实现这两个目标吗。
通过双击,我可以调用like函数,通过onTap显示控制器。

上面使用的包Chuie 0.12.0

我不知道如何构建
Chuie
,但如果有GestureDetector,您可以将其更改为类似以下内容:

GestureDetector(
    behavior: HitTestBehavior.opaque,
    onTap: () => setState(() => // show_controls,),
    onDoubleTap:() => setState(() => // like behaviour,),
    child: VideoWidget // or whatever is there
}
因此,您可以在一个小部件上同时使用两个侦听器。我认为那样的话,
onTap
会稍微延迟一下,以检查它是否是
onDoubleTap
。这样,您就不必在小部件的顶部添加覆盖

如果出于某种原因,您希望有此覆盖。。。然后这里有趣的属性是
行为
,因为它决定后面的元素是否接收事件

更新 试着换成

GestureDetector(
                behavior: HitTestBehavior.translucent,
                onDoubleTap: (){
                  print('its double tapped ');
                }

在github项目中,这一行:

似乎控件仅在视频处于暂停状态时显示。它是关于这个值的
controller.value.isPlaying

为什么不在你自己的手势检测器中控制它呢

GestureDetector(
    behavior: HitTestBehavior.opaque,
    onTap: () => setState(() => _controller.pause() ,), //changing here 
    onDoubleTap:() => setState(() => // like behaviour,),
    child: VideoWidget // or whatever is there
}
无论如何,希望你能找到答案

return GestureDetector(
            behavior: HitTestBehavior.opaque,
            onTapDown: (_) {
              setState(() {
                isMute = !isMute;
                _chewieController.setVolume(isMute ? 0 : 1);
              });
            },
            onDoubleTap: (){
              print('liked');
            },
            child: ClipRRect(
              borderRadius: BorderRadius.circular(30.0),
              child: Chewie(
                controller: _chewieController,
              ),
            ),
          );
在视频上的简单onTap上,它显示控制器,这里的onTap没有得到覆盖

onTapDown被用作onTap的替代方案,用于使视频静音。

嘿,感谢您的响应,但最主要的问题是视频播放器,而不是手势检测器。我需要知道视频播放器是否有任何显示控制功能。@kanwarmanraj什么视频播放器?对于Chuie或video_player 1.0.1ok,如果不是在官方文档中,您应该提供一些您想要使用的软件包说明,否则很难知道您在用什么。哦,我的错:D它是由Flatter团队开发的
return GestureDetector(
            behavior: HitTestBehavior.opaque,
            onTapDown: (_) {
              setState(() {
                isMute = !isMute;
                _chewieController.setVolume(isMute ? 0 : 1);
              });
            },
            onDoubleTap: (){
              print('liked');
            },
            child: ClipRRect(
              borderRadius: BorderRadius.circular(30.0),
              child: Chewie(
                controller: _chewieController,
              ),
            ),
          );