Flutter调用Yummly2接口运行时报NoSuchMethodError: 'call'错误求解决
问题原因
报错的核心是recipe.dart文件中JSON字段读取语法错误:_JsonMap属于Map类型,仅支持用**方括号[]**读取指定键的对应值,你错误使用了圆括号(),系统会将该操作识别为调用call方法,而Map类型没有该实例方法,因此抛出NoSuchMethodError。
解决方案
1. 修正recipe.dart的fromJson方法
首先把所有json('xxx')的写法替换为json['xxx'],同时对齐Yummly2接口实际返回的字段名、大小写:
factory Recipe.fromJson(dynamic json) { return Recipe( name: json['displayName'] as String, img: json['images'][0]['hostedLargeUrl'] as String, rating: json['rating']?.toDouble() ?? 0.0, time: json['totalTime'] as String); }
2. 补全api_recipe.dart的依赖导入
你当前代码中调用了jsonDecode但没有导入转换依赖,在文件顶部添加如下导入:
import 'dart:convert';
3. 可选的健壮性优化
可以添加判空逻辑避免接口字段缺失导致崩溃:
- 读取
data['feed']前先判断是否为null - 遍历feed项时先判断
i['content']、i['content']['details']是否存在,再添加到_temp数组
内容的提问来源于stack exchange,提问作者Hisyam Haryo
相关产品推荐
相关产品推荐

