save method

void save()

Implementation

void save() {
  List<int> head = 'ID3'.codeUnits + [0x04, 0x00, 0x00];
  List<int> tagData = [];
  for (var element in _frames) {
    List<int> frameData = [];
    frameData.addAll(element.name);
    int frameSize = element.data.length;
    frameData.add((frameSize >> 21) & 0x7F);
    frameData.add((frameSize >> 14) & 0x7F);
    frameData.add((frameSize >> 7) & 0x7F);
    frameData.add(frameSize & 0x7F);
    frameData += [0x00, 0x00]; // Flags
    frameData += element.data;
    tagData.addAll(frameData);
  }
  int tagSize = tagData.length;
  head.add((tagSize >> 21) & 0x7F);
  head.add((tagSize >> 14) & 0x7F);
  head.add((tagSize >> 7) & 0x7F);
  head.add(tagSize & 0x7F);
  int mpegFrameIndex = findFirstMpegFrame(_audioFile._rawData);
  _audioFile._rawData =
      head + tagData + _audioFile._rawData.sublist(mpegFrameIndex);
}