Бесконечный 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,
),
),
],
);