Конструктор 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,
который создает поток с одним значением