Flutter:如何手动向ListView添加额外的ListTile



我想做的是在ListView的最后一个添加一个额外的LisTile,但我仍然没有弄清楚。我当前的代码是这样的。

child: ListView.builder(
itemBuilder: (context, index) {
if (index == 0) {
// Add an extra item to the start
return ListTile(
...
);
}
index -= 1;
final item = _items[index];
// I want to an extra item here as well
if (index == _items.length) {
return ListTile();
}
return ListTile(
...
);

},
itemCount: _items.length + 2,

我已经试过上面的方法了,但没有用。出现错误。

无效值:不在0..4范围内,包括5

当我将itemCount更改为_items.length + 1时,它不会显示我要添加到末尾的额外ListTile

如果您想添加到开头和结尾,请检查下方

child: ListView.builder(
itemBuilder: (context, index) {
if (index == 0) {
// Add an extra item to the start
return ListTile(
...
);
}
if (index == _items.length + 1) {
return ListTile();
}
index -= 1;
final item = _items[index];

return ListTile(
...
);

},
itemCount: _items.length + 2,

您的错误在这里:

itemCount: _items.length + 2,

你应该增加一个

因为您添加了2个元素,对于最后一个调用,您得到index=list.length+1,然后从中减去1,最后在长度上得到1。

ex说你的列表有5个元素,因为你有

itemCount: _items.length + 2

Listview将调用您的func 7次,在第7次调用中,您的索引为6,您正在执行index=-1,等于5,5超出了您的范围。(你有表格0到4(

最新更新