Flutter StreamBuilder 无法接收所有数据,或者重写监听事件?

问题描述 投票:0回答:1

Dio 像这样发布到服务器:

dio.post<ResponseBody>(
      'url',
      data: {...},
      options: Options(
          responseType: ResponseType.stream,
          headers: {
            "Authorization": TokenUtil.token,
            "Accept": "*/*"
          }
      )
    ).then((res) => {
      res.data?.stream
        .transform(unit8Transformer)
        .transform(const Utf8Decoder())
        .transform(const LineSplitter()).listen((event) {
        if (event.contains('data:')) {
          print('current Data:$event');
          _counterSink.add(event);
        }
      }, onDone: () => {
        setState(() {
          currentState = ConnectionState.done;
        })
      }),
    });

StreamBuilder 是:

StreamBuilder(stream: _counterStream, initialData: '', builder: (context, AsyncSnapshot snapshot) {
  print('received Data:${snapshot.data}');
})

打印这个:所以我不知道为什么有时无法接收currentData,甚至counterSink不添加它。 参考图片

请帮我解决一下。谢谢

flutter stream addition dio
1个回答
0
投票

您的响应,内容参数,有时返回一个列表,有时返回一个字符串。 这可能会在映射响应时导致问题。

实现 onError 方法并打印/记录它。它应该为您提供有关问题所在的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.