![](/img/trans.png)
[英]Converting object to an encodable object failed on api call: _LinkedHashMap len:2
[英]Converting object to an encodable object failed in http call
我收到了 API 的回復,但出現了錯誤。 我在調用 topicpurchased() 時沒有得到任何回應
Future<bool> topicpurchased(int topicid, String title) async {
var map = new Map<String, dynamic>();
map['topicid'] = topicid;
map['title'] = title;
var data = json.encode(map);
print(data);
var response = await http.post(Constants.ApiBaseUrl + '/topicpuchased',
headers: headers, body: data);
if (response.statusCode == 200) {
print("topicpurchasede" + response.body);
TrueOrFalse trueOrFalse = TrueOrFalse.fromJson(json.decode(response.body));
if (trueOrFalse.status == "sucess") {
print(" 👍👍👍👍👍👍👍👍");
return true;
} else {
print("something went wrong" + trueOrFalse.status);
return false;
}
} else {
throw Exception('Failed');
}
}
控制台報錯如下
I/flutter (22130): topicpurchasede{"status":"sucess"}
I/flutter (22130): datamodel sucess
I/flutter (22130): 👍👍👍👍👍👍👍👍
E/flutter (22130): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: Converting object to an encodable object failed: Instance of 'Future<String>'
E/flutter (22130): #0 _JsonStringifier.writeObject (dart:convert/json.dart:688:7)
E/flutter (22130): #1 _JsonStringifier.writeMap (dart:convert/json.dart:769:7)
E/flutter (22130): #2 _JsonStringifier.writeJsonValue (dart:convert/json.dart:724:21)
E/flutter (22130): #3 _JsonStringifier.writeObject (dart:convert/json.dart:679:9)
E/flutter (22130): #4 _JsonStringStringifier.printOn (dart:convert/json.dart:877:17)
E/flutter (22130): #5 _JsonStringStringifier.stringify (dart:convert/json.dart:862:5)
E/flutter (22130): #6 JsonEncoder.convert (dart:convert/json.dart:262:30)
E/flutter (22130): #7 JsonCodec.encode (dart:convert/json.dart:172:45)
提前致謝。
首先,您必須使用 await 調用 function,因為它是 Future:
例子:
bool response = await topicpurchased(topicid,title);
Future<bool> topicpurchased(int topicid, String title) async { var map = new Map<String, dynamic>(); map['topicid'] = topicid; map['title'] = title; var data = json.encode(map); print(data); var response = await http.post(Constants.ApiBaseUrl + '/topicpuchased', headers: headers, body: data); if (response.statusCode == 200) { print("topicpurchasede" + response.body); //here could be the bug TrueOrFalse trueOrFalse = TrueOrFalse.fromJson(json.decode(response.body)); if (trueOrFalse.status == "sucess") { print(" "); return true; } else { print("something went wrong" + trueOrFalse.status); return false; } } else { //second: here too you can send a bool return because you function has declare a //bool response throw Exception('Failed'); } }
第三:錯誤似乎來自您的model,您可以在此行注釋並運行應用程序以查看錯誤是否來自那里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.