Приложение 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
и получаем изменение по оси xdx
чтобы увидеть, в каком ключе вы находитесь в зависимости отWidth
вашего ключа. - Моя консоль показывает это:
165.0
flutter: 165.3333282470703
flutter: 165.66665649414062
flutter: 166.0
..
..
flutter: 205.0
вы можете заметить, что разница между концом и началом равна ширине моего ключа (контейнера).
Надеюсь на эту помощь!