【发布时间】:2021-01-30 14:33:23
【问题描述】:
我是 Flutter 的初学者。我在获取这样的 JSON 响应时出错。
{
dataKey: [
{
key1: value1,
key2: value2,
key3: value3,
}
]
}
我一直在论坛里找这个问题,发现是这样的。
Map<String, dynamic> map = json.decode(response.body);
List<dynamic> data = map["dataKey"];
print(data[0]["name"]);
但我不明白如何编写函数。这是我的代码。
Future<Map> getData() async {
var response = await http.get(
'https://api.batulimee.com/v1_ship/port_detail?port_id=${widget.list[widget.index]
['port_id'].toString()}');
return json.decode(response.body) as Map<String, dynamic>;
}
FutureBuilder<Map>(
future: getData(),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? new Ports(
list: snapshot.data['data'],
)
: new Container();
},
),
class Ports extends StatelessWidget {
final List list;
Ports({this.list});
@override
Widget build(BuildContext context) {
return ListView.builder(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: list.length,
itemBuilder: (context, i) {
return Card(
child: Container(
padding: EdgeInsets.all(8),
color: Colors.red,
child: Text(
list[i]['port_website'].toString(),
style: TextStyle(color: Colors.white, fontSize: 24),
),
),
);
},
);
}
}
还有这样的错误。
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>'
很抱歉问了同样的问题,因为我不明白:(。谢谢你的帮助
【问题讨论】:
-
response得到了什么?能打印出来吗? -
好像是上面的 JSON 响应
-
Map<String, dynamic> map = json.decode(response.body); List<dynamic> data = map["dataKey"]; print(data[0]["key1"]);打印出value1吗? -
我从论坛获得了该功能代码,但我不知道如何将其写入我的代码中。 :(
-
stackoverflow.com/questions/55430061/… 我从这里得到了问题的解决。但不知道如何实现它