Концепция
Future
s в Dart - это что-то похожее на Promise
в мире JS. Фьючерсы показывают, что что-то должно произойти в какой-то момент в будущем. Самое приятное в этом то, что он позволяет Dart не блокировать выполнение программы, пока не будут выполнены вычисления. Это позволяет Dart продолжать работать с другими частями вашего приложения, которые не зависят от обычно медленных вычислений. Например, начало зацикливания аудиофайла.
Чтобы зациклить аудиофайл, вы должны сделать несколько вещей:
- загрузить файл из ФС в память
- создание экземпляра AudioPlayer
- установить некоторые свойства
Из всего этого, чтение файловой системы является относительно медленной операцией, поэтому обернуто в Future. Подробнее о фьючерсах читайте здесь
Но как мне работать с этой переменной или преобразовать ее в AudioPlayer?
await
будущее: AudioPlayer loopingPlayer = await audioCache.loop('somefile');
then
будущее: audioCache.loop('somefile').then((pl) { /* do work here */ });
работает, но не Future.pause ();
Это потому, что Future
(класс), не имеет метода pause()
. AudioPlayer
делает. Поэтому, чтобы вызвать этот метод, вам нужно дождаться завершения вычислений в Future (в данном случае, вещей, которые я упомянул выше).