import 'package:json_annotation/json_annotation.dart'; import 'package:ocarina/api/subsonic/subsonic.dart'; part 'song.g.dart'; @JsonSerializable() class Song { Song({ required this.id, required this.artistName, required this.title, required this.albumName, required this.albumId, required this.artistId, required this.duration, required this.bitRate, required this.contentType, required this.fileType, required String coverArtId, this.trackNumber, }) : _coverArtId = coverArtId; factory Song.fromJson(Map json) => _$SongFromJson(json); Map toJson() => _$SongToJson(this); final String id; @JsonKey(name: "artist") final String artistName; final String artistId; final String albumId; final String title; @JsonKey(name: "album") final String albumName; @JsonKey(name: "track") final int? trackNumber; final int duration; final int bitRate; final String contentType; @JsonKey(name: "suffix") final String fileType; @JsonKey(name: "coverArt") final String _coverArtId; String get coverArtUrl => SubsonicApiService().getCoverArtUrl(_coverArtId); String get streamUrl => SubsonicApiService().getStreamUrl(id); }