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

Flutter中Message.fromJson方法type分支逻辑仅部分生效求助

问题分析与修复方案

你的代码里视频类型判断逻辑写反了,导致这个分支永远不会触发——你写的是MessageEnum.text == MessageEnum.video.name,这是两个枚举常量的比较,结果永远是false,自然走不到视频分支。

修复后的代码:

Message.fromJson(Map<String, dynamic> json) {
    toId = json['toId'].toString();
    msg = json['msg'].toString();
    read = json['read'].toString();
    type = json['type'].toString() == MessageEnum.image.name
        ? MessageEnum.image
        : json['type'].toString() == MessageEnum.video.name
            ? MessageEnum.video
            : MessageEnum.text;
}

如果想避免重复调用json['type'].toString(),可以优化成更简洁的写法:

Message.fromJson(Map<String, dynamic> json) {
    toId = json['toId'].toString();
    msg = json['msg'].toString();
    read = json['read'].toString();
    final String typeStr = json['type'].toString();
    type = typeStr == MessageEnum.image.name
        ? MessageEnum.image
        : typeStr == MessageEnum.video.name
            ? MessageEnum.video
            : MessageEnum.text;
}

核心逻辑:先判断当前json的type字符串是否匹配图片类型,不匹配则判断是否匹配视频类型,都不符合就默认设为文本类型。

内容的提问来源于stack exchange,提问作者Mazen Elkorashy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:52:00