【问题标题】:ListView.builder() in Flutter with different itemsFlutter 中的 ListView.builder() 具有不同的项目
【发布时间】:2019-06-07 09:36:05
【问题描述】:

考虑以下build() 函数:

Widget build(BuildContext context){
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: ListView.builder(
            itemCount: 6,
              itemBuilder: (context, i){
                if(numberTruthList[i]){
                  return ListTile(
                    title: Text("$i"),
                  );
                }
              },
          ),
        )
      ),
    );
  }

如果 numberTruthList 是

List<bool> numberTruthList = [true, true, true, true , true, true];

然后输出结果是

如果 numberTruthList 是

List<bool> numberTruthList = [false, true, true, true , true, true];

输出结果是

我希望输出是包含项目的 ListView

 ListTile( title: Text("$i"),);

对于 i 的值使得 numberTruthList[i] 为真,代码应该是什么?

【问题讨论】:

标签: dart flutter material-design


【解决方案1】:

itemBuilder 应始终返回非空 Widget。您可以查看here

【讨论】:

    【解决方案2】:

    在其他情况下使用Wrap()

    Container 有内容时包装内容,无内容时匹配父项。

    Wrap 无论如何都会包装内容。

    【讨论】:

      【解决方案3】:
      ListView.builder(
        itemCount: 6,
        itemBuilder: (context, i) {
          return numberTruthList[i]
            ? ListTile(
                title: Text(numberTruthList[i].toString()),
              )
            : Container(
                height: 0,
                width: 0,
              );
         },
      )
      

      【讨论】:

      • 空ListTiles的空间有很大的差距。如何删除它?
      • 这个巨大的空白是空的ListTile()。将其替换为 Container 具有 0 高度和 0 宽度。
      • 请采纳。
      • 编辑了答案。
      猜你喜欢
      • 2021-12-26
      • 2021-01-19
      • 2021-06-28
      • 2020-11-23
      • 2022-01-23
      • 2020-05-19
      • 1970-01-01
      • 2021-07-16
      • 2021-12-31
      相关资源
      最近更新 更多