Flutter:显示来自HTTP响应的文本

时间:2019-03-15 08:29:32

标签: flutter

我有一个link.txt文件,我想在文本小部件上显示它的内容

我尝试过这种方法

try {
  HttpClient client = HttpClient();
  client.getUrl(Uri.parse(arbitaryLink.txt)).then((HttpClientRequest request) {
    return request.close();
  }).then((HttpClientResponse response) {
    response
        .transform(Utf8Decoder())
        .listen((contents) {
          // Do something here with contents
          return Text(contents);
    });
  });
} catch (exception) {
  print(exception);
}

contents是响应文本..每当我尝试在其范围之外使用它时,我都会得到null值。 我尝试返回Text,甚至尝试将其分配给静态变量,但一无所获。

Soo ..我在做什么错?

2 个答案:

答案 0 :(得分:0)

如果超出范围的意思是您要返回响应的值,然后尝试在某个小部件中使用它,则可能是您不等待客户端获取响应。

1)确保在范围内打印内容时获得值

2)将api调用或网络调用放入函数中,并添加await关键字以等待响应。

3)响应成功后,您可以调用setState用新的content值重建窗口小部件。

答案 1 :(得分:0)

这就是我解决的方式

Future<String> _fetchBtaqa() async {
final response = await http.get('https://www.albetaqa.site/social/data/alwaraqa/02quran/1quran03/p-quran116.txt');
if (response.statusCode == 200) {
  var decoded = utf8.decode(response.bodyBytes);
  print(decoded);

  return decoded;
} else {
  return "Error";
}

}