You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Firebase时无法正确获取Map中数组长度的问题

问题根因

代码中item.length统计的是单条list文档的顶层字段总数,并非存储清单内容的目标数组的元素个数,因此返回结果不符合预期。从数据库结构可知,存储清单内元素的数组字段名为items。

修复方法

读取目标数组字段的长度即可,补充空安全判断避免空字段触发报错,将原有subtitle部分代码替换为:

subtitle: Text(
  // 若items字段不存在/为空,默认显示0
  (item['items'] as List?)?.length.toString() ?? "0"
),

如果你的数组实际字段名不是items,替换为对应字段名即可。

对应修改后完整代码片段

body: Column(
  children: [
    Container(
      height: MediaQuery.of(context).size.height /1.4,
      width: MediaQuery.of(context).size.width,
      child:StreamBuilder(
        stream: FirebaseFirestore.instance
            .collection('Users')
            .doc(FirebaseAuth.instance.currentUser.uid)
            .collection('lists')
            .snapshots(),
        builder: (context, snapshot){
          QuerySnapshot data = snapshot.requireData;
          return ListView.builder(
            itemCount: data.size,
            itemBuilder: (context, index){
              Map item = data.docs[index].data();
              return InkWell(
                child: Card(
                  child: ListTile(
                    leading: Icon(Icons.skip_next_rounded),
                    title: Text(item['listName']),
                    subtitle: Text((item['items'] as List?)?.length.toString() ?? "0"),
                  ),
                ),
                onTap:(){
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => DetailScreen_CheckList_V3(item['listName'])),
                  );
                },
              );
            }
          );
        }
      )
    )
  ]
)

内容的提问来源于stack exchange,提问作者Laurent Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:09:24