首页 > 解决方案 > Http请求未完成

问题描述

我正在尝试从互联网上的 csv 文件中获取数据: https ://covid.ourworldindata.org/data/owid-covid-data.csv

如果您单击它,您可能已经注意到它会自动下载,我认为这是问题所在。

当我在 dart 中使用http 库来获取这些数据时,我一开始只取回了一小部分。response.statusCode仍然等于,其他200一切都按预期工作。

我认为自动下载是问题的一部分,但我不知道如何解决

这是代码:

import 'package:http/http.dart' as http;
...
main(){
  String url = 'https://covid.ourworldindata.org/data/owid-covid-data.csv';
  http.Response response = await http.get(url);
  print(response.body);
}

标签: csvhttpflutterdart

解决方案


下面是一个json格式的例子:

  Future<Response> fetchData() async
  {
   return await http.get("https://covid.ourworldindata.org/data/owid-covid-data.json");
  }

然后在build()方法内部:

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Center(
          child: FutureBuilder(
            future: fetchData(),
            builder: (context, AsyncSnapshot<Response> snapshot) {
              if (snapshot.hasData) {
                Map<String, dynamic> map =
                    Map.from(jsonDecode(snapshot.data.body));
                return Text(map["LBN"]["continent"]);
              } else if (snapshot.hasError) {
                return Text("${snapshot.error}");
              }

              // By default, show a loading spinner.
              return CircularProgressIndicator();
            },
          ), // This trailing comma makes auto-formatting nicer for build methods.
        ));
  }

推荐阅读