1

我正在开发应用程序,我可以在按下按钮时获得应用程序播放声音,但我还想实现一个功能,当用户将手指悬停在所有按钮上而不释放(如钢琴)时,每个按钮都会播放它的声音. 我如何在 Flutter 中做到这一点?我尝试了谷歌搜索,但由于问题非常具有描述性,我未能找到解决方案。

4

3 回答 3

3

使用GestureDetector小部件检测视图中小部件上的不同手势。你可能需要onTapDownonTapUp

于 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 回答