Flutter ListView становится неаккуратным и медленным при использовании кнопок RadioListTile или Radio в каждом элементе

Я пытаюсь реализовать список, в котором я покажу вопросы викторины, и каждый вопрос будет иметь 4 переключателя. Но когда список становится больше, например, 30-50 элементов, прокрутка списка становится очень неаккуратной и тормозной. без радио, а только прокрутка текста работает плавно. Пожалуйста, помогите мне, если вы столкнулись с подобной проблемой.

Я пытался использовать SingleChildScrollview поверх Listview, но не получил никаких решений. Думаю проблема в радио. Я не знаю, почему этот виджет такой тяжелый.

0
0
119
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

  • во-первых: ПЛОХАЯ ПРАКТИКА - оборачивать ListView в SingleChildScrollView. прочитайте эту статью, я просто резюмирую об этом: статья

  • для лучшей производительности используйте ListView.buildder. Я также объясняю в этой статье

но для получения дополнительной информации вы можете прочитать эту официальную документацию: https://docs.flutter.dev/cookbook/lists/long-lists

другие советы: установите значение itemExtent для ListView. Это улучшит производительность флаттер-приложений.

ListView(
 children: widgets,
 itemExtent: 200,
  • слева: без itemExtend (около 10 секунд, чтобы получить индекс 999),

  • справа: с itemExtend (очень быстрый переход к индексу 999)

прочитайте эту статью для другой реализации: ссылка

Я попробую этот пунктExtent и дам вам знать.

Rain 31.10.2022 15:24

Использование itemExtend действительно повышает производительность списка, но мне это не подходит. Свойство itemExtend определяет высоту каждого элемента в списке, что можно применить, когда мы знаем высоту дочерних элементов в списке. Но, в моем случае, рост детей динамичен и зависит от содержания каждого ребенка.

Rain 01.11.2022 11:45

это приведет к дорогому

pmatatias 01.11.2022 12:08

Да, мне нужно найти стратегии, чтобы уменьшить размер списка. Но я должен держать рост детей в динамике.

Rain 02.11.2022 15:31
Ответ принят как подходящий

Я удалил компоненты ListTile/RadioListTile/Radio из своих дочерних элементов ListView и создал радио с помощью IconButton, что сделало мой ListView более плавным. Я думаю, что Radio по умолчанию сделало мои ListItems более сложными, поскольку у них есть свои собственные состояния, которые могут быть дорогими. Я хотел бы использовать itemExtent, который делает прокрутку намного быстрее, чем сейчас.

Другие вопросы по теме