Приложение Flutter - хотите, чтобы звук подавлялся (), не нажимая на него

Я работаю над приложением, в котором я могу получить звук воспроизведения приложения при нажатии кнопки, но я также хочу реализовать функцию, которая, когда пользователь наводит палец на все кнопки, не отпуская их (например, фортепиано), каждая кнопка воспроизводит свой звук. Как я могу это сделать во Flutter? Я пробовал поискать в Google, но, поскольку проблема довольно описательная, мне не удалось найти решения.

3 ответа

Используйте виджеты GestureDetector, чтобы обнаруживать различные жесты над виджетами в представлении. Возможно, вам придется поиграть сonTapDown а также onTapUp

GestureDetector с onTapDown и onTapUp работают для воспроизведения одной клавиши в течение нужного количества времени. onPanUpdate - это то, что вам нужно, чтобы провести по нескольким клавишам. Так что все, что вам нужно, - это комбинация из трех.

Использование GestureDetector может быть возможным решением:

  • Вы должны знать ширину каждой клавиши.
  • Попробуйте поместить весь свой "Виджет пианино" в виджет строки.
  • Поместите виджет строки в 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

вы можете заметить, что разница между концом и началом равна ширине моего ключа (контейнера).

Надеюсь на эту помощь!

Другие вопросы по тегам