Свойство first
Свойство first класса Stream возвращает
Future, который завершится первым элементом
потока. Как только в поток поступит первый элемент,
Future разрешится этим значением, а подписка на поток
будет автоматически отменена. Если поток завершится
без единого элемента, Future завершится ошибкой
StateError. Если в потоке произойдет ошибка
до поступления первого элемента, Future завершится
этой ошибкой. Параметров у свойства нет.
Синтаксис
stream.first
Пример
Давайте получим первый элемент потока, созданного из списка:
void main()
{
Stream stream = Stream.fromIterable([1, 2, 3, 4, 5]);
stream.first.then((value) {
print(value);
});
}
Результат выполнения кода:
1
Пример
Давайте используем await, чтобы получить
первый элемент потока строк:
void main() async
{
Stream stream = Stream.fromIterable(['abcde', '12345']);
String res = await stream.first;
print(res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте обработаем ситуацию, когда поток пуст. В этом случае Future завершится ошибкой:
void main()
{
Stream stream = Stream.fromIterable([]);
stream.first.then((value) {
print(value);
}).catchError((error) {
print('Error: $error');
});
}
Результат выполнения кода:
"Error: Bad state: No element"