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

调用GUser.fromData解析Firebase JSON无返回值问题排查求助

问题根因

GUser.fromData方法执行过程中抛出了异常,代码走到这行直接中断进入catch块,因此不会打印后续的"GG"。你当前的catch块没有打印异常日志,所以无法直观看到错误原因。


已知必现错误点

  • 数值类型转换错误
    Firebase中存储的数值字段读取后默认是num类型,你直接调用double.parse()传入非字符串类型的数值,会直接抛出类型不匹配异常。
  • 列表类型转换错误
    你声明的position是List<Position>类型,直接[data['position']]的写法有两个问题:
    1. 若Firebase中position本身就是数组,你相当于把整个数组作为单个元素塞进新列表,结构完全错误
    2. 没有将数组的单个元素转换为Position实例,类型不匹配直接抛异常
  • 潜在拼写错误
    你代码中声明列表类型时写的是List<Positon>,正常该类名应该是Position(少了字母i),如果类名拼写不一致也会抛出类型错误。

修复方案

  1. 先给catch块增加异常日志打印,方便后续定位其他潜在问题
catch (e, stackTrace) {
  print('异常信息: $e');
  print('异常堆栈: $stackTrace');
  if (e is PlatformException) return e.message;
  return e.toString();
}
  1. 修复数值转换逻辑,将double.parse()替换为num转double的写法
bal = (data['bal'] as num).toDouble(),
rpl = (data['rpl'] as num).toDouble(),
upl = (data['upl'] as num).toDouble(),
  1. 修复position列表转换逻辑,需要遍历数组元素转换为Position实例
// 需提前保证你的Position类已经实现了fromJson转换方法
position = (data['position'] as List<dynamic>).map((item) => Position.fromJson(item)).toList(),
  1. 检查确认类名拼写统一,避免把Position写成Positon。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:00