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

时间:2020-03-28 06:38:18

标签: flutter dart

我想做的是在LisTile的最后添加一个额外的ListView,但我仍然不明白。 我当前的代码是这样的。

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

2 个答案:

答案 0 :(得分:1)

如果您也想添加到开头和结尾,请在下面进行检查

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,

答案 1 :(得分:0)

您的错误在这里:

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)