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

Flutter读取Firestore数组数据报List<dynamic>类型不匹配异常

错误原因

Firestore 客户端拉取的文档数据中,数组字段默认解析为List<dynamic>类型。Dart 类型系统不支持List<dynamic>到List<String?>的隐式类型转换,直接赋值就会触发该类型不匹配异常。其余单值字符串类字段为单个dynamic类型值,可自动隐式转换为String?,因此读取逻辑正常。

修复方案

修改events.dart中Events类构造方法内blockUid字段的赋值逻辑,做显式类型转换即可,同时可兼容老文档不存在该字段的场景,避免空指针错误。
修改后的构造方法代码如下:

Events(DocumentSnapshot doc) {
    eventId = doc.id;
    title = doc['title'];
    eventPlace = doc['eventPlace'];
    eventAddress = doc['eventAddress'];
    eventCategory = doc['eventCategory'];
    eventPrice = doc['eventPrice'];
    eventGenre = doc['eventGenre'];
    date = doc['date'];
    imgURL = doc['imgURL'];
    detail = doc['detail'];
    // 显式做列表类型转换,无对应字段时默认返回空数组
    blockUid = doc['blockUid'] != null 
        ? List<String?>.from(doc['blockUid'] as List) 
        : [];
  }

替换原有构造方法中blockUid = doc['blockUid'];这行即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:16:04