参数类型“AsyncSnapshot<Object?>”不能分配给参数类型“Map<String, dynamic>”
Posted
技术标签:
【中文标题】参数类型“AsyncSnapshot<Object?>”不能分配给参数类型“Map<String, dynamic>”【英文标题】:The argument type 'AsyncSnapshot<Object?>' can't be assigned to the parameter type 'Map<String, dynamic>' 【发布时间】:2021-11-07 13:12:50 【问题描述】:我有一个工厂方法将 json 转换为一个对象,该对象接受 Map
factory Lecturer.fromJson(Map<String, dynamic> json)=>Lecturer(
name:json['name'],
email: json['email'],
);
数据在未来的构建器中返回并像这样访问
FutureBuilder(
future: DB.getLecturer(),
builder: (_,lect)
if(!lect.hasData)
return CircularProgressIndicator();
Lecturer l=Lecturer.fromJson(lect.data[0]);
),
但是在将 Flutter 升级到更新版本后,我意识到 SQL 查询的返回类型不再是 Map
Error: The operator '[]' isn't defined for the class 'Object?'
【问题讨论】:
你在DB.getLecturer()
里面做什么,为什么不从未来收到Lecturer
?
【参考方案1】:
在您的构建器中将 lect 类型指定为 AsyncSnapshot:
builder: (_, AsyncSnapshot lect)
if(!lect.hasData)
return CircularProgressIndicator();
Lecturer l=Lecturer.fromJson(lect.data[0]);
【讨论】:
以上是关于参数类型“AsyncSnapshot<Object?>”不能分配给参数类型“Map<String, dynamic>”的主要内容,如果未能解决你的问题,请参考以下文章
获取错误“未知”类型的参数不能分配给“错误”类型的参数 |空值'
参数类型“Type”不能分配给参数类型“FirebaseUser”