我正在开发应用程序,我可以在按下按钮时获得应用程序播放声音,但我还想实现一个功能,当用户将手指悬停在所有按钮上而不释放(如钢琴)时,每个按钮都会播放它的声音. 我如何在 Flutter 中做到这一点?我尝试了谷歌搜索,但由于问题非常具有描述性,我未能找到解决方案。
问问题
356 次
3 回答
3
使用GestureDetector小部件检测视图中小部件上的不同手势。你可能需要onTapDown
和onTapUp
于 2020-06-20T18:02:18.847 回答
0
使用 GestureDetector 这可能是一个可能的解决方案:
- 您应该知道每个键的宽度。
- 尝试将所有“钢琴小部件”放在行小部件中。
- 将 Row Widget 放在 GestureDetector 中,如下所示:
GestureDetector(
onLongPressMoveUpdate: (detail){
print(detail.globalPosition.dx);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
height: 40,
width: 40,
color: Colors.black,
),
SizedBox(width: 6),
Container(
color: Colors.white,
height: 40,
width: 40,
),
],
),
)
- 您可以使用该功能
OnLongPressMoveUpdate
并获取 x 轴的变化,dx
以查看您所在的键,具体取决于Width
您的键。 - 我的控制台显示了这一点:
165.0
flutter: 165.3333282470703
flutter: 165.66665649414062
flutter: 166.0
..
..
flutter: 205.0
您可以注意到结束和开始之间的差异等于我的密钥(容器)的宽度。
希望这有帮助!
于 2020-06-20T18:38:49.550 回答
0
带有 onTapDown 和 onTapUp 的 GestureDetector 可以在适当的时间内播放单个键。onPanUpdate 是您在几个键上滑动所需的。所以这三者的结合应该是你所需要的。
于 2021-06-01T06:36:18.237 回答