我想显示一个列表,我正在使用listView
。事情是,我只想显示5个项目,这就是说,当用户向下滚动时,我想从开始的索引中删除,然后将另一个窗口小部件添加到包含我的窗口小部件的列表的末尾,但是当我这样做时,滚动视图不是停留在当前位置(例如,在索引3中显示该项目),而是转到下一个项目(它跳转到项目4的位置)。
我的数据有点昂贵,我无法保留它们,因此必须从一开始就将其删除。我真的很困,我将不胜感激
答案 0 :(得分:2)
使用 take()
此方法返回从索引 0 开始到给定列表提供的计数的可迭代对象。这是您使用 toList()
var myList = [0, 'one', 'two', 'three', 'four', 'five'];
myList.take(3).toList() // [0, one, two]
答案 1 :(得分:0)
要将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));
答案 2 :(得分:0)
我不是100%确定您的问题是什么。如果您想随时构建窗口小部件,则可以使用ListView.builder小部件。给它一个itemBuilder和一个可选的itemCount。它会随您建立,并删除看不见的小部件。
ListView.builder(
itemCount: myList.length,
itemBuilder: (context, index) => Card(
child: ListTile(
title: Text(myList[index]),
),
),
),
),