brechen Ausnahme '_InternalLinkedHashMap<dynamisch, dynamisch>' ist kein Subtyp des Typs 'Map<String, String>'
Ich lief flattern aktualisieren Sie noch heute...
Ich bin jetzt auf v0.2.11 und ich bin immer eine seltsame Laufzeitfehler in dieser Funktion:
Future apiCall([Map params = const {}]) async {
loading = true;
Map stringParams = {};
params.forEach((k,v)=>stringParams[k.toString()] = v.toString());
Uri url = new Uri.https(apiDomain, apiPath, stringParams);
print(url);
var result = await http.post(
url,
body: {'apikey': apiKey}
);
loading = false;
print(result.body);
return json.decode(result.body);
}
Ich bin dem Aufruf der Funktion ohne Parameter, und ich bekomme Subtyp Fehler.
Dieser code funktioniert in dartpad.
Hat jemand eine Idee, was könnte Los sein?
- Dies ist nicht die Antwort an sich aber dieser Seite vielleicht helfen, zu verstehen, die neuen type-safe Funktionen im Dart 2.0.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konstruktor für
Uri.https
erfordert eine Karte mit einer Laufzeit Art derMap<String, String>
. Beim erstellenstringParams
ohne jede Art von Anmerkungen, erstellen Sie in Wirklichkeit eineMap<dynamic, dynamic>
. Die richtige Art und Weise zu erstellen, diese für die Dart 2 istDer Grund, warum dies funktioniert ist, dass in Dart 1, auch in starken Modus
dynamic
war verschwommen und wirkte wie beideObject
undnull
- das bedeutet, ein dynamischer Typ zugewiesen werden, und von nichts. In Dart 2,dynamic
verhält sich genau wieObject
, außer Sie können Methoden aufrufen oder auf die Eigenschaften zugreifen, ohne einen niedergeschlagenen.Habe ich dieses
Senden Sie verschachtelte JSON-params wie diese:
Konvertieren in einen string mit
json.encode
.Senden "Content-Type:application/json" im header.