[英]Flutter Post API call
I'm working on flutter project, in which I'm calling an POST API.我正在处理颤振项目,在该项目中我正在调用 POST API。 Its response is like
它的反应就像
{
"_id": "5f61a39b8b7cf93550898b63",
"buildname": "ANT PC DORYLUS RZ320G",
"processor": "AMD Ryzen 3 3200G (4Core, 4Threads, Upto 4.0 Ghz)",
"motherboard": "MSI B450M PRO m2 Max",
"ram": "8GB ADATA XPG Gammix D30 DDR4 3000MHz",
"graphiccard": "Radeon Vega Graphics",
"ssd": "120GB ADATA/Crucial SATA SSD",
"hdd": "1 TB WD Blue SATA HDD 7200 RPM",
"psu": "Antec VP450P IN",
"cpucooler": "AMD STOCK COOLER",
"os": "30 Days Microsoft Windows 10 Home 64-Bit Trial",
"cpucase": "Antec NX200",
"price": "28437.00",
"createdAt": "2020-09-16T05:33:15.383Z",
"__v": 0
}
I wrote this following code but it showing me an error type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'PreBuildResponse'
我写了以下代码,但它显示了一个错误类型
'_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'PreBuildResponse'
Code:代码:
Future<List<PreBuildResponse>> _fetchProduct() async {
final url = 'http://10.0.2.2:3000/prebuild/product';
final response = await http.post(
url,
body: {
'id' : "$productId"
}
);
if (response.statusCode == 200) {
List jsonResponse = json.decode(response.body);
return jsonResponse
.map((list) => new PreBuildResponse.fromJson(list))
.toList();
} else {
throw Exception('Failed to load data from API');
}
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: SingleChildScrollView(
child: FutureBuilder(
future: _fetchProduct(),
builder: (context, snapshot) {
if (snapshot.hasData) {
PreBuildResponse data = snapshot.data;
return Text(data.buildname);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
),
)
);
}
}
And find the model code here https://gist.github.com/vaandhare/3aa46c71369f012514cfafe4911cd11c并在此处找到模型代码https://gist.github.com/vaandhare/3aa46c71369f012514cfafe4911cd11c
you have to convert your JSON response to your model class.您必须将您的 JSON 响应转换为您的模型类。 there should have a
fromJson
method In the model class which you can use here while converting the JSON to your model class.在模型类中应该有一个
fromJson
方法,您可以在此处使用它,同时将 JSON 转换为您的模型类。 I have a Book
Model class here so that you can refer it.我在这里有一个
Book
模型类,以便您可以参考它。
Future<List<Book>> getAllBook() async {
http.Response response = await http.get(
EndPoint.Book,
);
if (response.statusCode == 200) {
var parsed = jsonDecode(response.body);
var bookData = parsed['books'];
List<Book> data = bookData.map<Book>((e) => Book.fromJson(e)).toList();
print(data);
return data;
}
}
Future<PreBuildResponse> _fetchProduct() async {
final url = 'http://10.0.2.2:3000/prebuild/product';
final response = await http.post(
url,
body: {
'id' : "$productId"
}
);
if (response.statusCode == 200) {
return PreBuildResponse.fromJson(json.decode(response.body));
} else {
throw Exception('Failed to load data from API');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.