generateToneSoundData method
根据摩斯码生成完整的正弦波+静音采样数据 Generate complete sine wave + silence sample data based on Morse code
morseCode Morse Code / 摩尔斯电码
返回 Float64List,包含所有符号对应的采样数据
Implementation
@override
Future<Float64List> generateToneSoundData(String morseCode) async {
final Completer<Float64List> completer = Completer<Float64List>();
final List<double> allSamples = [];
final subscription = toneDataEventChannel
.receiveBroadcastStream(morseCode)
.listen(
(dynamic event) {
if (event is Map) {
final data = event['data'];
if (data is List) {
allSamples.addAll(data.cast<double>());
}
}
},
onError: (dynamic error) {
if (!completer.isCompleted) {
completer.completeError(error);
}
},
onDone: () {
if (!completer.isCompleted) {
completer.complete(Float64List.fromList(allSamples));
}
},
cancelOnError: true,
);
final result = await completer.future;
await subscription.cancel();
return result;
}