簡體   English   中英

在 http 調用中將 object 轉換為可編碼的 object 失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM