Flutter报错:Class '_Map<String, dynamic>'无实例方法'call',求原因
错误原因分析
报错Class '_Map<String, dynamic>' has no instance method 'call'的直接原因是错误地将List的single属性当作方法调用:
在你的考勤数据获取方法中,这一行代码存在问题:
attendanceModel = AttendanceModel.fromJson(result.single());
Dart的List类型里,single是一个只读属性而非方法——它的作用是返回列表中的唯一元素(仅当列表长度为1时有效)。你给它加了括号(),相当于先获取result.single返回的Map<String,dynamic>对象,再尝试像调用函数一样调用这个Map对象,但Map本身并没有call()方法,因此触发了该错误。
修复方式
去掉括号,直接使用属性:
attendanceModel = AttendanceModel.fromJson(result.single);
额外提醒:如果查询可能返回多个结果,建议先判断列表长度为1再使用single,否则会抛出StateError;如果允许返回0或1个结果,可以用singleOrNull属性替代,避免报错。
内容的提问来源于stack exchange,提问作者Anmol Singh
相关产品推荐
相关产品推荐

