LoadResult.fromJson constructor

LoadResult.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory LoadResult.fromJson(Map<String, dynamic> json) {
  final loadTypeStr = json['loadType'] as String;
  final loadType = LoadType.values.firstWhere(
    (e) => e.toString().split('.').last == loadTypeStr,
    orElse: () => LoadType.empty,
  );

  dynamic data;
  switch (loadType) {
    case LoadType.track:
      data = Track.fromJson(json['data'] as Map<String, dynamic>);
      break;
    case LoadType.playlist:
      data = PlaylistInfo.fromJson(json['data'] as Map<String, dynamic>);
      break;
    case LoadType.search:
      data = (json['data'] as List)
          .map((e) => Track.fromJson(e as Map<String, dynamic>))
          .toList();
      break;
    case LoadType.error:
      data = LoadException.fromJson(json['data'] as Map<String, dynamic>);
      break;
    case LoadType.empty:
      data = null;
      break;
  }

  return LoadResult(
    loadType: loadType,
    data: data,
  );
}