问题描述
我正在使用 socket_client_io 和 Riverpod。套接字客户端使用我想在 StreamProvider 中传播的更新事件。
我目前拥有的是以下内容。它完成了工作,但是......我想直接写入 StreamProvider 中的流,所以我不需要创建额外的流来从事件到产出。
final downloadProgressprovider = StreamProvider.autodispose<Progress>((ref) async* {
// open socketio
final Server host = ref.read(configProvider).talkServer;
final String jwt = ref.read(userProvider).jwt;
IO.socket _socket = IO.io('${host.uri.toString()}/?token=$jwt',IO.OptionBuilder()
.setTransports(['websocket'])
.build()
);
StreamController<Progress> _stream = StreamController<Progress>();
ref.ondispose(() {
// close socketio
_stream.close();
_stream = null;
_socket.dispose();
_socket = null;
});
_socket.on('download-update',(message) {
print('download-update incoming');
_stream.add(Progress.fromJson(json.decode(message)))
});
await for (final value in _stream.stream) {
yield value;
}
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)