Я изучаю флаттер и пытаюсь создать приложение, которое воспроизводит некоторые звуки из списка, проблема в том, что когда я нажимаю кнопку воспроизведения, звуки будут воспроизводиться одновременно, а не один за другим. Как мне этого добиться?
import 'package:flutter/material.dart';
import 'package:audioplayers/audio_cache.dart';
void main() => runApp(XylophoneApp());
class XylophoneApp extends StatelessWidget {
// music
List<int> music = [1, 2, 3, 1];
void playSound(int noteNum) {
final player = AudioCache();
player.play('note$noteNum.wav');
}
// function to play the playlist
void playList() async {
for (var i = 0; i < music.length; i++) {
await playSound(music[i]);
//sleep(three);
print('done');
}
}
//custom key widget
Expanded buildKey({color, int soundNum}) {
return Expanded(
child: FlatButton(
color: color,
onPressed: () {
playSound(soundNum);
},
),
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.black,
body: SafeArea(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
buildKey(color: Colors.blue, soundNum: 1),
buildKey(color: Colors.red, soundNum: 2),
buildKey(color: Colors.orange, soundNum: 3),
buildKey(color: Colors.yellow, soundNum: 4),
buildKey(color: Colors.green, soundNum: 5),
buildKey(color: Colors.teal, soundNum: 6),
buildKey(color: Colors.purple, soundNum: 7),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
FlatButton(
onPressed: () {
// call function
playList();
},
child: Icon(
Icons.play_circle_outline,
color: Colors.white,
size: 40.0,
),
),
FlatButton(
onPressed: () {
music.clear();
},
child: Icon(
Icons.settings_backup_restore,
color: Colors.white,
size: 40.0,
),
),
],
),
],
),
),
),
);
}
}