Вступить в клуб →
средняявопросFlutter и Dart: виджеты, рендер и асинхронность

Разбор ответа на 8 МБ замораживает анимацию загрузки на полторы секунды, хотя код async

Future<List<Product>> loadCatalog() async {
  final body = await http.read(catalogUri);
  final list = jsonDecode(body) as List;
  return list.map((e) => Product.fromJson(e)).toList();
}

Пока грузится каталог, крутится индикатор. После скачивания он замирает примерно на 1,5 с, в DevTools — длинный кадр в UI-потоке. Что поможет?

  • Разбирать JSON в отдельном изоляте через compute
  • Обернуть jsonDecode в Future.microtask
  • Добавить await перед вызовом jsonDecode
  • Вызывать loadCatalog без await из initState

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела