extractMetadataFromFile method

  1. @override
Future<Map<Frame, dynamic>> extractMetadataFromFile(
  1. File file
)
override

Implementation

@override
Future<Map<Frame, dynamic>> extractMetadataFromFile(File file) async {
  RandomAccessFile randomAccessFile = await file.open(mode: FileMode.read);

  await randomAccessFile.setPosition(0);
  final List<int> headerData = await randomAccessFile.read(11);

  if (headerData.startsWith([73, 68, 51])) {
    final tagSizeData = headerData.sublist(6, 10);
    final tagSize = _parseFrameSize(tagSizeData);

    await randomAccessFile.setPosition(0);
    final List<int> fileDataBytes = await randomAccessFile.read(tagSize + 3);

    return _extractMetadata(headerData, fileDataBytes);
  } else {
    print('not a valid ID3v2 file');
    return {};
  }
}