如何在Dart Http中获取多个键值

时间:2019-05-15 11:49:00

标签: api http flutter

请问我如何使用带有FutureBuilder的http在Flutter中获得这种API响应。

"GLODATA": {
            "1000": {
                "pname": "GLO 1.0GB/14days",
                "price": "470",
                "pld": "1000"
            },
            "1600.01": {
                "pname": "GLO 2.0GB/30days",
                "price": "940",
                "pld": "1600.01"
            },
            "3750.01": {
                "pname": "GLO 4.5GB/30days",
                "price": "1900",
                "pld": "3750.01"
            },
            "5000.01": {
                "pname": "GLO 7.2GB/30days",
                "price": "2430",
                "pld": "5000.01"
            }
        },

1 个答案:

答案 0 :(得分:0)

我认为在您的情况下,您将需要执行以下操作:

Api:

Future<http.Response> getData() async {
    final _api = "http://yourendpointhere";

    http.Response response = await http.get(_api);

    if (response.statusCode != 200) {
      throw Exception("Request failed...");
    }

    return response;
  }

然后使用您的api:

http.Response response = await _apiInstance.getData();

if (response.body != null && response.body.isNotEmpty) {
  String source = Utf8Decoder().convert(response.bodyBytes);

  Map<String, Map<String, dynamic>> data = Map();
  data = Map<String, Map<String, dynamic>>.from(json.decode(source));
}

然后,您可以在模型类中创建工厂构造函数,接收该映射并将其转换为类的实例。