Ответ
FutureBuilder — это виджет Flutter, который упрощает работу с асинхронными операциями (Future). Он автоматически перестраивает интерфейс в зависимости от состояния Future: загрузка, ошибка или успешное завершение.
Основные параметры:
future:Future, данные которого нужно отобразить.builder: Функция, возвращающая виджет на основеAsyncSnapshot(содержит данные, ошибку и состояние).
Пример:
FutureBuilder<String>(
future: fetchData(), // Ваш Future
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Ошибка: ${snapshot.error}');
} else {
return Text('Данные: ${snapshot.data}');
}
},
)
Особенности:
- Не кэширует данные — при каждом обновлении родительского виджета
Futureвыполняется заново (если не переиспользоватьFutureвнеFutureBuilder). AsyncSnapshotсодержит полезные поля:data,error,connectionState(например,ConnectionState.done).
Используется для простых сценариев. Для сложных состояний (кэширование, повторы) лучше подходят StreamBuilder или пакеты типа flutter_bloc.