es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error se debe al hecho de que el tipo del parámetro snap.snapshot.value es Object?, el cual no puede ser asignado directamente a Map<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 clave as o llamando al método .cast() en el parámetro. El código corregido se muestra a continuación:

    var map = (snap.snapshot.value as Map<dynamic, dynamic="">);
    

    o

    dart
    var map = Map<string, dynamic="">.from(snap.snapshot.value.cast<dynamic, dynamic="">());
    </dynamic,></string,></dynamic,></dynamic,></string,>

Comments are closed.