运行代码报`String is not a subtype of type int of 'index'`错误求助
错误原因排查
- 报错
type 'String' is not a subtype of type 'int' of 'index'的核心逻辑是:你当前使用的values变量实际是List类型,List要求用int类型的下标访问元素,但你传入了字符串类型的键"cont",类型不匹配直接触发报错。你后续加.toString()的修改不生效,是因为报错发生在访问values["cont"]的阶段,还没执行到调用toString的步骤。 - 从你给出的
values结构来看,还有一个逻辑问题:cont字段根本不在values的顶层键中,而是嵌套在以随机ID(比如-Md0S2rcK4NSx0klfBoZ)为键的子Map里,哪怕values是Map类型,直接用values["cont"]也拿不到对应值。 - 大概率你是在获取Firebase快照数据时误用了API:如果调用
DataSnapshot的.values属性,拿到的是所有值的集合列表,而非完整的键值对Map。
可行解决方案
情况1:要获取所有子项中的cont字段值
首先修正你获取values的方式,拿到正确的Map结构后遍历筛选即可:
// 从快照获取数据时直接取value转Map,不要调用.values Map values = snapshot.value as Map; values.forEach((key, value) { // 筛选出包含cont字段的子Map if (value is Map && value.containsKey("cont")) { print(value["cont"]); } });
情况2:要访问顶层固定字段
直接用顶层存在的键访问即可,比如:
// 访问用户名 print(values["name"]); // 访问评分 print(values["Rating"]);
内容的提问来源于stack exchange,提问作者nlmm
相关产品推荐
相关产品推荐

