generateToneSoundData method

  1. @override
Future<Float64List> generateToneSoundData(
  1. String morseCode
)
override

根据摩斯码生成完整的正弦波+静音采样数据 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;
}