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
相关产品推荐
相关产品推荐

