[英]The argument type 'Object?' can't be assigned to the parameter type 'Map<dynamic, dynamic>'
I have an error on the "snap.snapshot.value" parameter in the following line "var map = Map <String, dynamic>.from (snap.snapshot.value);".我在以下行“var map = Map <String, dynamic>.from (snap.snapshot.value);”中的“snap.snapshot.value”参数有错误。 The error is "The argument type 'Object?'
错误是“参数类型‘对象?’ can't be assigned to the parameter type 'Map <dynamic, dynamic>'. "
不能分配给参数类型 'Map <dynamic, dynamic>'。”
class _HomePageState extends State<HomePage> {
List<Posts> postsList = [];
@override
void initState() {
super.initState();
DatabaseReference postsRef = FirebaseDatabase.instance.reference().child("Posts");
postsRef.once().then((snap) {
var map = Map<String, dynamic>.from(snap.snapshot.value); <--- the error is here
postsList.clear();
map.forEach((key, value) {
var values = Map<String,dynamic>.from(map);
Posts posts = Posts
(
values['url'],
values['descrizione'],
values['data'],
values['ora']
);
postsList.add(posts);
});
Would you change a code like below?您会更改如下代码吗?
From从
var map = Map<String, dynamic>.from(snap.snapshot.value);
To至
Map<String, dynamic> map = snap.snapshot.value as Map<String, dynamic>
This is because Map.from function accepts a Map<dynamic, dynamic> but you are passing the object
instead.这是因为Map.from function 接受Map<dynamic, dynamic>但您传递的是
object
。 So to pass as the same use casting like below:所以要像下面一样使用铸造:
var map = Map<String, dynamic>.from(snap.snapshot.value as Map<dynamic, dynamic>);
In your Posts model, you need to remove any explicit object casting.在您的帖子 model 中,您需要删除任何明确的 object 转换。 eg change from
例如从
`Posts.fromMap(Map<String, dynamic> map) {
comments: List<String>.from((map['comments'] as List<String>))
}`
to到
`Posts.fromMap(Map<String, dynamic> map) {
comments: List<String>.from((map['comments'] as List))
}`
so it's cast as a List and no farther所以它被当作一个列表,没有更远的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.