你好,我有一個顫振回應,只是一個回應,它給了我一個來自 api 的產品名稱
[
{
"pname":"xyz"
}
]
我想決議并在文本欄位上顯示 pname 值我嘗試了以下
Future<ProductsRequest> pnames() async {
var url= 'https:abc.com/api/p';
final response = await http.get(Uri.parse(url)).timeout(Duration(seconds: 105000));
var responseJson = json.decode(response.body);
return responseJson;
}
模型
List<ProductsRequest> productsrequestFromJson(String str) => List<ProductsRequest>.from(json.decode(str).map((x) => ProductsRequest.fromJson(x)));
String productsrequestToJson(List<ProductsRequest> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class ProductsRequest {
ProductsRequest({
this.pname,
});
String pname;
factory ProductsRequest.fromJson(Map<String, dynamic> json) => ProductsRequest(
pname: json["pname"],
);
Map<String, dynamic> toJson() => {
"pname": pname,
};
}
然后在我的飛鏢課上
new FutureBuilder<ProductsRequest>(
future: pnames(""),
builder: (BuildContext context, snapshot) {....
Widget _pdisplay(ProductsRequest data) {
return Container(
child:Column(
children: [
Text(data.pname.toString()),
],
)
);
它顯示錯誤串列動態不是未來的子型別
uj5u.com熱心網友回復:
首先,您在回應中得到的是一個串列。您嘗試回傳的只是原始回應的解碼版本。
所以你需要做的就是對解碼的回應執行 forEach 并制作一個 ProductsRequest 串列。
像這樣的事情:
List<ProductsRequest> list = new List<ProductsRequest>();
responseJson.forEach((v) {
list.add(new ProductsRequest.fromJson(v));
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321695.html
上一篇:將檔案發送到服務器axios
