现在的问题比较大,因为metadata的引入导致原有的部分播放进度信息推送错误
This commit is contained in:
@@ -1,30 +1,39 @@
|
||||
// lib/metadata/metadata_reader.dart
|
||||
import 'dart:io';
|
||||
import 'package:audio_metadata_reader/audio_metadata_reader.dart' as amr;
|
||||
import 'metadata_model.dart';
|
||||
|
||||
/// 底层元数据读取器(封装 audio_metadata_reader)
|
||||
class MetadataReader {
|
||||
/// 从本地文件读取原始元数据
|
||||
Future<RawMetadata> readRawMetadata(File file) async {
|
||||
try {
|
||||
// TODO: 安装 audio_metadata_reader 后实现
|
||||
// final meta = await amr.readMetadata(file, getImage: false);
|
||||
// return RawMetadata(
|
||||
// title: meta.title ?? '',
|
||||
// artist: meta.artist ?? '',
|
||||
// album: meta.album ?? '',
|
||||
// albumArtist: meta.albumArtist ?? '',
|
||||
// composer: meta.composer ?? '',
|
||||
// genre: meta.genre ?? '',
|
||||
// year: meta.year ?? 0,
|
||||
// trackNumber: meta.trackNumber ?? 0,
|
||||
// discNumber: meta.discNumber ?? 0,
|
||||
// );
|
||||
final meta = amr.readMetadata(file, getImage: false);
|
||||
|
||||
// 临时返回空,等待接入 audio_metadata_reader
|
||||
return const RawMetadata();
|
||||
return RawMetadata(
|
||||
title: meta.title ?? '',
|
||||
artist: meta.artist ?? '',
|
||||
album: meta.album ?? '',
|
||||
// ⭐ genres 和 performers 是非空 List<String>,直接使用
|
||||
genres: meta.genres,
|
||||
performers: meta.performers,
|
||||
year: _toInt(meta.year),
|
||||
trackNumber: _toInt(meta.trackNumber),
|
||||
trackTotal: _toInt(meta.trackTotal),
|
||||
discNumber: _toInt(meta.discNumber),
|
||||
totalDisc: _toInt(meta.totalDisc),
|
||||
duration: meta.duration,
|
||||
);
|
||||
} catch (e) {
|
||||
return const RawMetadata();
|
||||
}
|
||||
}
|
||||
|
||||
/// 安全转换为 int,处理 Object 类型
|
||||
int _toInt(dynamic value) {
|
||||
if (value == null) return 0;
|
||||
if (value is int) return value;
|
||||
if (value is String) return int.tryParse(value) ?? 0;
|
||||
// 有些字段可能是 double 或 num
|
||||
if (value is num) return value.toInt();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user