尝试转到详细信息页面时出现此错误:
类型'_InternalLinkedHashMap'不是类型'用户'的子类型
onTap: (){
print(posts['items'][index]); //return flutter ( 4824): {empno: 7839, ename: KING....
Navigator.push(context,
new MaterialPageRoute(builder: (context) => DetailPage(posts['items'][index]))
);
},
class DetailPage extends StatelessWidget {
final User user;
DetailPage(this.user);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(user.ename),
)
);
}
}
答案 0 :(得分:1)
我猜你有一个这样的用户模型
class User {
final String empno;
final String ename;
User({this.empno, this.ename});
}
您需要将用户传递到“详细信息”页面而不是“地图”。试试
onTap: (){
print(posts['items'][index]);
User _user = User(
empno: posts['items'][index].empno
ename: posts['items'][index].ename
);
print(_user);
Navigator.push(context,
new MaterialPageRoute(builder: (context) => DetailPage(_user))
);
},
答案 1 :(得分:0)
如您在print()
函数中所见,posts['items'][index]
的结果为{empno: 7839, ename: KING...
。在DetailPage构造函数中,您正在等待User
对象,并且正在传递HashMap。您必须将User对象传递给此构造函数才能使其正常工作。否则,如果要传递此LinkedHashMap,则代码应如下所示:
class DetailPage extends StatelessWidget {
final Map<String, dynamic> user;
DetailPage(this.user);
...
}
然后您将可以通过键访问此地图的每个元素。