Как сделать паузу между звуковыми играми во флаттере? - PullRequest
0 голосов
/ 02 марта 2020

Я изучаю флаттер и пытаюсь создать приложение, которое воспроизводит некоторые звуки из списка, проблема в том, что когда я нажимаю кнопку воспроизведения, звуки будут воспроизводиться одновременно, а не один за другим. Как мне этого добиться?

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,
                    ),
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...