Что такое FutureBuilder

«Что такое FutureBuilder» — вопрос из категории Flutter виджеты, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.