我有一个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 ..我在做什么错?
答案 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";
}
}