Отделите создание Future от отрисовки его текущего состояния
Зачем
Зачем это нужно
Опишите загрузку, ошибку и пустой ответ разными ветками
Проверьте завершение задачи после ухода пользователя с экрана
Вопросы
Частые вопросы
Как попросить исправить повторную загрузку во Flutter?
Разбери Flutter: FutureBuilder<int>(future: loadCount(), builder: buildCount), где loadCount делает сетевой запрос, а родитель часто перестраивается. Покажи минимальный StatefulWidget с сохранённым Future из initState и отображением загрузки, ошибки и числа 7. Объясни, когда Future нужно создать заново. Для локального теста замени сеть управляемым Completer, код не запускай.
Что передать для разбора FutureBuilder?
Укажите версии Dart и Flutter, вставьте виджет и функцию загрузки без ключей API. Опишите, что вызывает перестроение родителя и когда данные должны обновляться. Сначала проследите создание Future, затем выберите явный повод для повторной загрузки.
Как проверить, что перестроение не создаёт новый запрос?
На локальном примере считайте вызовы тестовой функции. Перестройте родителя, не пересоздавая State: число вызовов не должно расти. Завершите Completer значением 7 и проверьте отображение 7; отдельный экземпляр используйте для ошибки.
Достаточно ли проверки mounted для всех проблем Future?
mounted помогает не обращаться к уже удалённому State, но не отменяет запрос и не решает гонку ответов. Для ручного setState после await нужны проверки жизненного цикла; для обновления данных может понадобиться отдельный протокол отмены или версии запроса.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.