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

Firebase收藏状态获取报错:String无法转为bool类型

解决“type 'String' is not a subtype of type 'bool'”错误

问题根源

从Firebase读取收藏状态时,favoriteData[key]返回的是字符串类型(如"true"或"false"),但Product类的isFavorite是布尔类型,直接赋值导致类型不匹配。

修复方案

修改fetchAndSetProducts函数中isFavorite的赋值逻辑,增加对字符串类型的判断和转换:

// 替换原代码中isFavorite的赋值行
isFavorite: favoriteData == null 
    ? false 
    : (favoriteData[key] is String 
        ? favoriteData[key] == 'true'  // 将字符串转成布尔值
        : favoriteData[key] ?? false), // 处理布尔类型或null的情况

额外验证

  1. 检查Firebase Realtime Database中userFavorites/$userId下的节点值,确认是否存在字符串类型的"true"/"false",若为误写入可手动改为布尔值(去掉引号)。
  2. 你的toggleFavoriteStatus方法中用json.encode(isFavorite)写入数据是正确的,JSON编码布尔值会生成不带引号的true/false,但代码层面的兼容能覆盖Firebase可能出现的自动转换问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:16:58