setCover method
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),
),
);
}
}