【问题标题】:How can I show just 5 items of a list in flutter如何在颤动中仅显示列表的 5 项
【发布时间】:2020-12-26 22:41:08
【问题描述】:

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

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

【问题讨论】:

    标签: list flutter dart flutter-layout


    【解决方案1】:

    要将IterableListIterable)限制为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】:

      使用take()此方法返回从索引0开始的迭代,直到给定列表提供的计数。这是您使用toList()的列表

      var myList = [0, 'one', 'two', 'three', 'four', 'five'];
      
      myList.take(3).toList()  // [0, one, two]
      

      【讨论】:

        【解决方案3】:

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

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

        Check out this doc

        【讨论】:

        • 是的,你是对的,但如果我这样做,它只会继续添加到列表视图中。想象一个包含从 1 到 6 的数字的列表。现在我想将数字 7 添加到列表中并删除数字 1,因此它将是从 2 到 7 的数字列表。问题是当我这样做时,列表视图显示数字 4 将显示数字 5
        • 您可以通过添加密钥来解决这个问题。观看此视频:youtu.be/…
        【解决方案4】:

        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,
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-26
          • 1970-01-01
          • 1970-01-01
          • 2021-12-17
          • 2021-12-22
          • 2020-12-12
          • 2021-11-21
          相关资源
          最近更新 更多