将连续流写入文件 flutter/dart

kva*_*992 5 java dart flutter

我有一个广播直播链接,当用户单击开始按钮时我需要录制该链接。然后,一旦用户单击“停止”,我需要将流保存到文件中。

我能够使用java成功地做到这一点,通过将数据作为字节数组读取并编写一个简单的while循环,声明只要数据不为空,就将字节写入数组,当它为空时,则将字节数组写入文件。下面我可以提供我在 Java 中使用过的代码片段。

URL url = new URL(radioStream);
inputStreamRecording = url.openStream();

fileOutputStreamRecording = new FileOutputStream(OutputSourceStream + "/temp.mp3");
recordingBuffer = inputStreamRecording.read();

while (recordingBuffer > -1) {
   fileOutputStreamRecording.write(recordingBuffer);
   recordingBuffer = inputStreamRecording.read();
}
Run Code Online (Sandbox Code Playgroud)

然而,我不知道如何在 dart/flutter 中做到这一点,并且找不到任何关于此的示例。所以我的问题是如何将上面的 Java 代码转换为可以在 Flutter 中使用的代码。我假设我会使用 Future,但是在录制点击事件期间如何停止 Future?任何帮助,将不胜感激。先感谢您!

kva*_*992 5

var out = File('out.dat').openWrite();
var ss = Stream.periodic(3.seconds, (i) {
  print('generating event #$i');
  return 'line $i\n'.codeUnits;
})
.listen(out.add);
Future.delayed(15.seconds, () {
  print('calling ss.cancel');
  ss.cancel();
});
Run Code Online (Sandbox Code Playgroud)

这个答案非常接近我正在寻找的答案,以防其他人试图找到这个答案。所有功劳都归功于@pskink!