class SongModel { final String mid; final String? id; final String name; final String artist; final String album; final int duration; // 毫秒 final String? albumPic; SongModel({ required this.mid, this.id, required this.name, required this.artist, required this.album, required this.duration, this.albumPic, }); factory SongModel.fromJson(Map json) { return SongModel( mid: json['mid'] ?? '', id: json['id'], name: json['name'] ?? '', artist: json['artist'] ?? json['singer'] ?? '', album: json['album'] ?? '', duration: json['duration'] ?? 0, albumPic: json['albumPic'] ?? json['pic'] ?? json['coverUri'], ); } Map toJson() { return { 'mid': mid, 'id': id, 'name': name, 'artist': artist, 'singer': artist, // 兼容性字段 'album': album, 'duration': duration, 'albumPic': albumPic, 'pic': albumPic, // 兼容性字段 'coverUri': albumPic, // 兼容性字段 }; } @override String toString() { return 'SongModel(mid: $mid, name: $name, artist: $artist, album: $album, duration: $duration)'; } @override bool operator ==(Object other) { if (identical(this, other)) return true; return other is SongModel && other.mid == mid; } @override int get hashCode => mid.hashCode; }