Класс AsyncSnapshot
Класс AsyncSnapshot передают в builder у
FutureBuilder
и StreamBuilder.
Поле connectionState берёт значения
ConnectionState.
Готовые данные лежат в data, сбой в error.
Синтаксис
AsyncSnapshot.withData(ConnectionState.done, 'abcde')
Параметры
| Параметр | Описание |
|---|---|
connectionState |
Ждёт данные, уже получил или поток закрыт. Принимает ConnectionState.
|
data |
Последнее успешное значение. |
error |
Ошибка, если запрос завершился сбоем. |
Пример
Давайте прочитаем data из snapshot FutureBuilder:
import 'package:flutter/material.dart';
Future<String> ready() async => 'abcde';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: FutureBuilder<String>(
future: ready(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data!);
}
return const Text('12345');
},
),
),
),
),
);
}
На экране AsyncSnapshot с hasData покажет 'abcde'.
Пример
Давайте создадим snapshot вручную и выведем connectionState:
import 'package:flutter/material.dart';
void main()
{
final snap = AsyncSnapshot<String>.withData(
ConnectionState.done,
'12345',
);
print(snap.connectionState == ConnectionState.done);
print(snap.data);
}
Результат выполнения кода
true
12345
Смотрите также
-
перечисление
ConnectionState,
которое хранит snapshot.connectionState -
виджет
FutureBuilder,
который создаёт snapshot изFuture -
виджет
StreamBuilder,
который обновляет snapshot поStream -
виджет
ValueListenableBuilder,
который обходит snapshot и слушает value