[FIXED] Einen Wert vom Typ „Map“ erwartet, aber einen vom Typ „_JsonMap“ in Flatter erhalten

Ausgabe

Nach dem Aktualisieren von Flutter auf Nullsicherheit habe ich einen Wert vom Typ „Map<String, Object>“ erwartet, aber einen vom Typ „Fehler“ erhalten.

 Future<bool> tryAutoLogin() async {
    final prefs = await SharedPreferences.getInstance();
     if (!prefs.containsKey('userData')) {
       return false;
     }
    try {
      final extractedUserData =
          json.decode(prefs.getString('userData')as String) as Map<String, Object>;
      print(extractedUserData);
    } catch (error) {
      print(error);
    }
   
    return true;
  }


Weiß jemand, warum es passiert? Danke im Voraus.

Lösung

Bei Dart gibt es einen Unterschied zwischen dem Typ Objectund dem Schlüsselwort dynamic. Was ist der Unterschied? Schauen Sie sich das an . Wenn nun jsonDecode eine Map empfängt, gibt es a zurück Map<String, dynamic>, um das Aufrufen von Methoden zu ermöglichen, die nicht für Object definiert sind.

Lösung: Ersetzen Sie Map<String, Object> durch Map<String, dynamic>.

Hier ist auch ein Code-Stil-Hinweis: Casten Sie nicht a String?mit as String, verwenden !Sie nach dem Nullable-Wert, um anzunehmen, dass er nicht null ist.


Beantwortet von –
Lasslos05


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like