如何設定顫振方法以回傳從方法內未來 http post 呼叫的結果中提取的未來值?
下面的示例代碼正在呼叫 Web URL 以添加新產品。我希望此方法僅回傳新創建產品的 ID(即回應中的“名稱”)
Future<String> add(Product aNewProduct) async {
var aUrl = Uri.parse(dbUrl);
http.post(aUrl,body: toBody(aNewProduct),).then((response) {
var aStr = json.decode(response.body)['name'];
return Future<String>.value(aStr);
});
}
使用上面的代碼,決議器顯示以下錯誤/警告...
The body might complete normally, causing 'null' to be returned,
but the return type, 'FutureOr<String>', is a potentially non-nullable type.
(Documentation) Try adding either a return or a throw statement at the end.
對于如何解決這個問題,有任何的建議嗎?
uj5u.com熱心網友回復:
您可以使用await來獲取 aFuture或更確切地說是您的http請求的值。之后,您可以簡單地對其進行解碼并回傳您想要的行為。
Future<String> add(Product aNewProduct) async {
var aUrl = Uri.parse(dbUrl);
final response = http.post(
aUrl,
body: toBody(aNewProduct),
);
return json.decode(response.body)['name'];
}
uj5u.com熱心網友回復:
嘗試這個:
Future<String> add(Product aNewProduct) async {
var aUrl = Uri.parse(dbUrl);
var response= await http.post(aUrl,body: toBody(aNewProduct),);
if(response.statusCode==200){
var rawData = await response.stream.bytesToString();
Map data=json.decode(rawData);
return data['name'];
}else{
return '';
}
}
uj5u.com熱心網友回復:
就像在陳述句return之前放一個一樣簡單http.post
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/431660.html
下一篇:協變在顫振中的作用
