// lib/models/playlist.dart import 'package:qingting_player/services/audio_service.dart'; class Playlist { final String id; final String name; final PlayMode playMode; final DateTime createdAt; final DateTime updatedAt; Playlist({ required this.id, required this.name, this.playMode = PlayMode.sequential, DateTime? createdAt, DateTime? updatedAt, }) : createdAt = createdAt ?? DateTime.now(), updatedAt = updatedAt ?? DateTime.now(); Map toJson() => { 'id': id, 'name': name, 'play_mode': Playlist.playModeToString(playMode), // ⭐ 改用公开静态方法 'created_at': createdAt.millisecondsSinceEpoch, 'updated_at': updatedAt.millisecondsSinceEpoch, }; factory Playlist.fromJson(Map json) => Playlist( id: json['id'] as String, name: json['name'] as String, playMode: Playlist.stringToPlayMode( json['play_mode'] as String? ?? 'sequential'), createdAt: DateTime.fromMillisecondsSinceEpoch(json['created_at'] as int), updatedAt: DateTime.fromMillisecondsSinceEpoch(json['updated_at'] as int), ); Playlist copyWith({String? name, PlayMode? playMode}) => Playlist( id: id, name: name ?? this.name, playMode: playMode ?? this.playMode, createdAt: createdAt, updatedAt: DateTime.now(), ); // ⭐ 改为公开静态方法 static String playModeToString(PlayMode mode) { switch (mode) { case PlayMode.sequential: return 'sequential'; case PlayMode.repeatOne: return 'repeat_one'; case PlayMode.shuffle: return 'shuffle'; } } static PlayMode stringToPlayMode(String value) { switch (value) { case 'repeat_one': return PlayMode.repeatOne; case 'shuffle': return PlayMode.shuffle; default: return PlayMode.sequential; } } }