android - Flutter Api 响应列表动态不是未来的子类型
问题描述
您好,我有一个颤振响应,只有一个响应,它给了我来自 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()),
],
)
);
它显示错误列表动态不是未来的子类型
解决方案
首先,您在响应中得到的是一个列表。您试图返回的只是原始响应的解码版本。
因此,您需要做的只是对解码后的响应执行 forEach 并列出 ProductsRequest。
像这样的东西:
List<ProductsRequest> list = new List<ProductsRequest>();
responseJson.forEach((v) {
list.add(new ProductsRequest.fromJson(v));
});
推荐阅读
- angular - Typescript / Angular中具有0个元素的函数返回映射
- python - 为什么我的代码在控制台中运行时运行良好,但在脚本中使用时运行良好?
- machine-learning - 为什么我的机器学习算法会卡住?
- javascript - 可以使用具有真假键或逻辑运算符的对象而不是单个 if else 来降低圈复杂度吗?
- python - BeautifulSoup 中的 find_all() 方法返回空列表
- dotnetnuke - 是否可以在同一 DNN 实例上的门户之间共享 2SXC 内容模块?
- asp.net-core - 动态参数在 Put 方法中不起作用
- java - 使用 EasyMock 在异常后执行断言
- file - 如何在谷歌驱动器中移动快捷方式
- kubernetes - 如何在 Kubernetes Persistent 卷中声明和配置 Bitnami Docker Discourse 数据?