Отображение List с Firestore

Какой из вариантов отображения листа с Firestore считается правильней? Вариант 1:

class ItemList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final retrieveItems = context.bloc<CategoriesCubit>();
    retrieveItems .getData();
    return BlocBuilder<CategoriesCubit, CategoriesState>(
        builder: (context, state) {
      if (state is CategoriesLoaded) {
        return ListView.builder(
            itemCount: state.categories.length,
            itemBuilder: (context, index) {
              return Column(
                children: state.categories[index].listItems
                    .map((item) => Text(item.name))
                    .toList(),
              );
            });
      }
      return Container();
    });
  }
}

Вариант 2 вместо ListView.builder:

return Column(
            children: state.categories
                .map((cat) => Column(
                    children: cat.listItems
                        .map((item) => Text(item.name))
                        .toList()))
                .toList());

Или есть еще метод который более правильней?

Category.fromMap(Map<String, dynamic> data) {
    categoryName = data['categoryName'];
    listItems =
        (data['testItems'] as List).map((data) => Item.fromMap(data)).toList();
  }

 Item.fromMap(Map<String, dynamic> data) {
    categoryID = data['categoryID'];
    name = data['name'];
  }

Стрим:

Stream<List<Category>> getData() {
    return categoryData.snapshots().map((event) =>
        event.documents.map((e) => Category.fromJson(e.data)).toList());
  }

Ответы (1 шт):

Автор решения: MiT

С точки зрения оптимизации вариант с ListView.builder, работает лучше. Так как он рендерит элементы в момент скролла (и лишь определенное количество штук). В то время как Column рендерит все элементы списка. Но также есть и обратная сторона, ListView.builder является более тяжелым для малого количество элементов (до 5-15 элементов, где половина из них можно показать на экране).

По этому надо выбирать, отталкиваясь от задач...

→ Ссылка