如何在 flutter 中仅显示列表中的 5 项

问题描述 投票:0回答:4

我想在 flutter 中显示一个列表,我正在使用

listView
。问题是我只想显示 5 个项目,我的意思是当用户向下滚动时我想从开始索引中删除并将另一个小部件添加到包含我的小部件的列表的末尾,但是当我这样做时ScrollView 不是停留在原来的位置(例如显示索引 3 中的项目),而是转到下一个项目(它跳转到项目 4 所在的位置)。

我的数据有点贵,我无法保留它们,我必须从一开始就删除它们。我真的很困惑,我真的很感激一些帮助

list flutter dart flutter-layout
4个回答
34
投票

要将

Iterable
List
Iterable
)限制为 n 元素,可以使用
.take(int count)
方法。

// A list of 0 - 999 ( 1,000 elements)
var nums = [for(int i = 0; i < 1000; i++) i];
// Take only the first 5, then print
print(nums.take(5));

返回的

Iterable
是懒惰的。它不会修剪列表或任何内容。它只是一个迭代器,最多只会产生
count

此外,您可以使用

.skip(int count)
方法跳过列表中的前 count 值。

将 2 结合起来,得到这样的结果:

// skips 0-4, takes 5,6,7,8,9
print(nums.skip(5).take(5));

1
投票

我不能 100% 确定您的问题是什么。如果您想随时构建小部件,可以使用 ListView.builder 小部件。给它一个 itemBuilder 和一个可选的 itemCount。它将随着您的使用而构建并删除看不见的小部件。

ListView.builder(
    itemCount: myList.length,
    itemBuilder: (context, index) => Card(
      child: ListTile(
        title: Text(myList[index]),
        ),       
      ),
    ),
  ),

查看此文档


0
投票

itemCount: 5,
<

如果你的列表少于 5 个,就会出错,所以只需使用这个:

int limit_transaction = 0;

然后在你的 FutureBuilder 中: 构建者:(上下文,快照){

if (snapshot.hasData) {
 List<LastTransaction> list = snapshot.data;
    if(list.length == 1){
        limit_transaction = 1;
    } else if(list.length == 2){
        limit_transaction = 2;
    } else if(list.length == 3){
        limit_transaction = 3;
    } else if(list.length == 4){
        limit_transaction = 4;
    } else if(list.length == 5){
        limit_transaction = 5;
    }

Listview 的最后一步,只需解析这个:

itemCount: limit_transaction,

0
投票

更好的作品:

list1=list.sublist(0,5);

它将列表限制为前 5 个元素。

© www.soinside.com 2019 - 2024. All rights reserved.