Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
518 of 724 menu
◀ ▶

Конструктор fromFuture

Конструктор fromFuture класса Stream создает новый поток, который будет содержать одно значение или ошибку, полученные из переданного объекта Future. Когда Future завершится успешно, поток испустит его результат и закроется. Если Future завершится с ошибкой, поток испустит эту ошибку и также закроется. В первый параметр мы передаем объект Future, который нужно преобразовать в поток. Второй необязательный параметр sync определяет, будет ли поток синхронным.

Синтаксис

Stream.fromFuture(future, [sync = false])

Пример

Давайте создадим поток из асинхронной функции, которая возвращает строку через одну секунду:

Future<String> fetchData() async { await Future.delayed(Duration(seconds: 1)); return 'abcde'; } void main() { Stream<String> stream = Stream.fromFuture(fetchData()); stream.listen((value) { print(value); }); }

Результат выполнения кода:

"abcde"

Пример

Давайте создадим поток из Future, которое завершается ошибкой, и обработаем ее:

Future<int> fetchError() async { throw Exception('Something went wrong'); } void main() { Stream<int> stream = Stream.fromFuture(fetchError()); stream.listen( (value) { print(value); }, onError: (error) { print('Error: $error'); } ); }

Результат выполнения кода:

"Error: Exception: Something went wrong"

Смотрите также

  • класс Stream,
    который представляет поток данных
  • метод fromIterable,
    который создает поток из коллекции
  • метод listen,
    который подписывается на события потока
  • метод value,
    который создает поток с одним значением
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить