Riverpod StreamProvider 访问流

问题描述

我正在使用 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 (将#修改为@)