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
相关产品推荐
相关产品推荐

