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

Flutter从Firebase拉取数据时报List<dynamic>不是List<String>子类型

问题根源

  • 报错的核心原因是Dart不存在List<dynamic>到List<String>的隐式类型转换:你从Firebase拉取的数据中,categories字段经json解码后默认是List<dynamic>类型,但你的Cake类中categories属性定义为List<String>,直接赋值触发类型不匹配错误,中断了数据组装逻辑,导致loadedProduct没有数据。

修复方法

你只需要对categories字段手动做类型转换即可,以下3种写法任选其一修改赋值代码:

  • 调用cast方法批量转换泛型:
categories: (cakeData['categories'] as List).cast<String>()
  • 直接生成指定类型的新列表:
categories: List<String>.from(cakeData['categories'])
  • 遍历逐个转换后生成列表:
categories: (cakeData['categories'] as List).map((item) => item as String).toList()

可选优化

如果categories字段可能为空,可以加判空逻辑避免空异常:

categories: cakeData['categories'] == null ? [] : List<String>.from(cakeData['categories'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:00:01