【问题标题】:How to display only special parts in a list FLUTTER如何仅显示列表中的特殊部分 FLUTTER
【发布时间】:2021-07-01 13:13:30
【问题描述】:

我是 Flutter 的新手,我想知道如何制作这样的东西:

我想通过一个项目列表循环并为所有项目制作一个小部件。我使用 for 块而不是 listView.builder 来执行此操作,因为它不是列表。但我想在与它们不同的块中显示每个具有“有效”作为价值价值的项目,这些项目具有“无效”作为价值。

我以为我可以这样做:

Text("Valid"),

for (ValuePair item in items)
  if (item.worth == "valid"){
    return myOwnView(item);
  },

Text("Invalid"),

for (ValuePair item in items)
  if (item.worth == "invalid"){
    return myOwnView(item);
  };

我能做些什么来代替它?

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    第一种解决方案(首选):

    我会先过滤列表中的值,然后像这样将其传递给您自己的构建器:

    List<YourItemClass> yourUnsortedList = [...];
    List<YourItemClass> yourSortedList = [...];
    for (var I = 0; I < yourUnsortedList.length; i++) {
      if (yourUnsortedList.worth == 'valid') {
        yourSortedList.add(yourUnsortedList[i])
      }
    }
    

    下一步 - 建立这个列表。

    第二种解决方案(坏的一种):

    在您的构建器中将 if 语句放在顶部,如果您不需要构建任何内容,请返回空容器,如下所示:

    List<YourItemClass> yourUnsortedList = [...];
    
    Listview.builder(
      itemCount: yourUnsortedList.length;
      itemBuilder: (context, idx) {
        if (yourUnsortedList[idx].worth == 'valid') {
          return YourOwnItem(item);
        } else {
          return Container();
        }
      }
    )
    
    

    【讨论】:

      【解决方案2】:

      尝试制作两个 Widget 类型的列表,一个是有效的,另一个是无效的。 所以,我们有:

      List<Widget> validChildren = List.empty(growable=true);
      List<Widget> invalidChildren = List.empty(growable=true);
      

      然后使用 for 循环添加孩子:

      for(Valuepair item in items)
        if(item.worth == "valid")
          validChildren.add(MyOwnView(item));
        else
          invalidChildren.add(MyOwnView(item));
      

      您可以将这些列表添加为列或行的子项。 如果您不想要该列表,可以使用 continue; 代替 invalidChildren.add()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-16
        • 1970-01-01
        • 2015-11-03
        相关资源
        最近更新 更多