ToneSnap_FSX_Flutter/lib/data/models/music_model.dart
fengshengxiong c7cbdb04be 个人曲库
2024-07-14 16:13:46 +08:00

75 lines
1.6 KiB
Dart

// Author: fengshengxiong
// Date: 2024/6/24
// Description: 音乐模型
import 'dart:convert';
import 'package:hive/hive.dart';
part 'music_model.g.dart';
@HiveType(typeId: 2)
class MusicModel extends HiveObject {
@HiveField(0)
String? title;
@HiveField(1)
String? subTitle;
@HiveField(2)
String? thumbnail;
@HiveField(3)
String? videoId;
@HiveField(4)
String? playlistId;
@HiveField(5)
String? url;
MusicModel({
this.title,
this.subTitle,
this.thumbnail,
this.videoId,
this.playlistId,
this.url,
});
MusicModel copyWith({
String? title,
String? subTitle,
String? thumbnail,
String? url,
String? videoId,
String? playlistId,
}) =>
MusicModel(
title: title ?? this.title,
subTitle: subTitle ?? this.subTitle,
thumbnail: thumbnail ?? this.thumbnail,
url: url ?? this.url,
videoId: videoId ?? this.videoId,
playlistId: playlistId ?? this.playlistId,
);
factory MusicModel.fromJson(String str) =>
MusicModel.fromMap(json.decode(str));
String toJson() => json.encode(toMap());
factory MusicModel.fromMap(Map<String, dynamic> json) => MusicModel(
title: json["title"],
subTitle: json["subTitle"],
thumbnail: json["thumbnail"],
videoId: json["videoId"],
playlistId: json["playlistId"],
url: json["url"],
);
Map<String, dynamic> toMap() => {
"title": title,
"subTitle": subTitle,
"thumbnail": thumbnail,
"videoId": videoId,
"playlistId": playlistId,
"url": url,
};
}