我正在开发一个Flutter应用程序,它需要以流的形式从API接收数据,并在接收到数据后立即对其进行处理。我的API以块形式发送数据,我希望在Flutter应用程序中读取这些数据,并在到达时打印块值。
我尝试使用http
包来发出请求,但我不确定如何监听传入的流并实时处理分块数据。下面是我的当前代码:
import 'package:http/http.dart' as http;
void fetchData() async {
final url = Uri.parse('http://my-api-server.com/stream');
final client = http.Client();
try {
final request = http.Request('GET', url);
final response = await client.send(request);
// How to read and print the chunks from the response stream?
} catch (e) {
print("Error: $e");
} finally {
client.close();
}
}
如何修改此代码以监听传入的流,在接收到的每个块时对其进行处理,并实时打印块值?任何帮助将不胜感激。
1条答案
按热度按时间bmvo0sr51#
要侦听传入的流并在Flutter中接收到的每个数据块时对其进行处理,可以利用http包的stream属性。下面是如何修改代码来实现这一点:
解决方案代码:
在这段代码中,我们使用http.Response对象的stream属性,并使用utf8.decoder对其进行转换,以将传入的字节转换为可读的字符串。
通过使用await for循环,我们可以在块到达时对其进行实时迭代。在本例中,每个块都将使用print(chunk)进行处理和打印。您可以使用所需的逻辑来替换打印(块)行,以处理数据。
记住导入dart:convert包来访问utf8.decoder来解码传入的流。
通过这些修改,您的Flutter应用将能够从API接收数据块,并在它们到达时处理它们。
希望有帮助,让我知道你的反馈,谢谢,快乐编码..