track_summary.dart 819 B

1234567891011121314151617181920212223242526272829303132333435
  1. import 'package:json_annotation/json_annotation.dart';
  2. @JsonSerializable()
  3. class TrackSummary {
  4. @JsonKey(name: 'text')
  5. String text;
  6. @JsonKey(name: 'items', includeToJson: false)
  7. Map<String, String>? items;
  8. TrackSummary({
  9. required this.text,
  10. this.items,
  11. });
  12. factory TrackSummary.fromJson(Map<String, dynamic> json) {
  13. final rawItems = json['items'] as List<dynamic>? ?? [];
  14. final parsedItems = <String, String>{};
  15. for (final item in rawItems) {
  16. if (item is Map<String, dynamic>) {
  17. final key = item['key']?.toString();
  18. final value = item['value']?.toString();
  19. if (key != null && value != null) {
  20. parsedItems[key] = value;
  21. }
  22. }
  23. }
  24. return TrackSummary(
  25. text: json['text'] ?? '',
  26. items: parsedItems,
  27. );
  28. }
  29. }