Бесконечный Listview в SliverList

После добавления:

return SliverList(
   delegate: SliverChildBuilderDelegate((contextSli, indexSli) {

ListView стал бесконечным (заканчиваются итемы и начинается заново).

Как исправить бесконечность списка?

Widget build(BuildContext context) {
  return SliverList(
    delegate: SliverChildBuilderDelegate((contextSli, indexSli) {
      return ListView.builder(
          physics: physics,
          shrinkWrap: shrinkWrap,
          itemCount: itemCount,
          controller: controller,
          reverse: reverse,
          primary: primary,
          itemBuilder: (context, i) {
            final TimelineModel model = itemBuilder(context, i);
            model.isFirst = reverse ? i == (itemCount - 1) : i == 0;
            model.isLast = reverse ? i == 0 : i == (itemCount - 1);
            switch (position) {
              default:
                return TimelineItemLeft(properties: properties, model: model);
            }
          });
    }),
  );
}

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

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

SliverChildBuilderDelegate сам является билдером списка, по этому у вас получается список в списке (бесконечным).

Будет как-то так:

return CustomScrollView(
  reverse: reverse,
  physics: physics,
  primary: primary,
  shrinkWrap: shrinkWrap,
  controller: controller,
  slivers: [
    SliverList(
      delegate: SliverChildBuilderDelegate(
        (context, i) {
            final TimelineModel model = itemBuilder(context, i);
            model.isFirst = reverse ? i == (itemCount - 1) : i == 0;
            model.isLast = reverse ? i == 0 : i == (itemCount - 1);
            switch (position) {
              default:
                return TimelineItemLeft(properties: properties, model: model);
            }
        },
        childCount: itemCount,
      ),
    ),
  ],
);
→ Ссылка