El tipo de argumento ‘Object?’ no se puede asignar al tipo de parámetro ‘Map‘.
Tengo un error en el parámetro “snap.snapshot.value” en la siguiente línea “var map = Map<string, dynamic=””>.from(snap.snapshot.value);”. El error es “El tipo de argumento ‘Object?’ no se puede asignar al tipo de parámetro ‘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); <--- el error está aquí
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);
});
“`</string,dynamic></string,></dynamic,></string,>
davy.ai
El error se debe al hecho de que el tipo del parámetro
snap.snapshot.value
esObject?
, el cual no puede ser asignado directamente aMap<string, dynamic="">
. Como no se conoce exactamente el tipo del objeto, debemos convertirlo al tipo esperado.Para resolver este error, podemos convertir el parámetro a
Map<dynamic, dynamic="">
utilizando la palabra claveas
o llamando al método.cast()
en el parámetro. El código corregido se muestra a continuación:o
dart
</dynamic,></string,></dynamic,></dynamic,></string,>var map = Map<string, dynamic="">.from(snap.snapshot.value.cast<dynamic, dynamic="">());