Выбор ответа Middle Тестирование обновлено
Flutter: pumpAndSettle зависает
Вопрос
На экране крутится CircularProgressIndicator, и await tester.pumpAndSettle() падает по тайм-ауту. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Бесконечная анимация индикатора никогда не «успокаивается», кадры планируются всегда. pumpAndSettle крутит кадры, пока есть запланированные, с ограничением по времени.
Варианты ответа
pumpAndSettleнельзя вызывать послеpumpWidget, только после действий пользователя- Бесконечная анимация индикатора никогда не «успокаивается», кадры планируются всегдаправильный ответ
- Индикатору нужен реальный
vsyncустройства, которого в тестовом окружении нет - Тест с анимациями должен быть объявлен как
async*, иначе кадры не прокачиваются
Разбор
pumpAndSettle крутит кадры, пока есть запланированные, с ограничением по времени. Индикатор загрузки анимируется бесконечно и всё время планирует новый кадр. Решение: pump(const Duration(seconds: 1)) или подменить загрузку, чтобы данные пришли сразу. Ограничения на вызов после pumpWidget нет, vsync в тестах эмулируется, а async* здесь неуместен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.