setCover method

void setCover(
  1. Uint8List? cover
)

Implementation

void setCover(Uint8List? cover) {
  if (cover != null) {
    bool format = listEquals(cover.sublist(0, 2), [
      0xff,
      0xd8,
    ]); // JPG starts with 0xff 0xd8, PNG starts with 0x89 0x50
    var data = [0x03];
    if (format) {
      data +=
          'image/'.codeUnits +
          'jpg'.codeUnits +
          [0x00, 0x00, 0x00] +
          cover +
          [0x00];
    } else {
      data +=
          'image/'.codeUnits +
          'png'.codeUnits +
          [0x00, 0x00, 0x00] +
          cover +
          [0x00];
    }
    _frames
        .firstWhere(
          (frame) => listEquals(frame.name, 'APIC'.codeUnits),
          orElse: () {
            _frames.add(ID3Frame('APIC'.codeUnits, List.empty()));
            return _frames.last;
          },
        )
        .data = data;
  } else {
    _frames.remove(
      _frames.firstWhereOrNull(
        (frame) => listEquals(frame.name, 'APIC'.codeUnits),
      ),
    );
  }
}