import '../cartoon_media_info.dart'; import '../video_model.dart'; import 'module_detail_model.dart'; /// 片库筛选面板的全部可选项(分类 / 排序 / 付费 / 标签 / 时间) class HomeVideoLibrary { List? canvas; List? orderBy; List? paymentType; List? vidTags; List? acgTags; List? timeType; HomeVideoLibrary(); HomeVideoLibrary.fromJson(dynamic json) { canvas = (json['canvas'] as List?)?.map((e) => TimeType.fromJson(e)).toList(); orderBy = (json['orderBy'] as List?)?.map((e) => TimeType.fromJson(e)).toList(); paymentType = (json['paymentType'] as List?)?.map((e) => TimeType.fromJson(e)).toList(); vidTags = (json['vidTags'] as List?)?.map((e) => Tags.fromJson(e)).toList(); acgTags = (json['acgTags'] as List?)?.map((e) => Tags.fromJson(e)).toList(); timeType = (json['timeType'] as List?)?.map((e) => TimeType.fromJson(e)).toList(); } //一项都没有就别渲染筛选面板了;timeType 不算,它单独有默认值 bool get isNotEmpty => canvas?.isNotEmpty == true || orderBy?.isNotEmpty == true || paymentType?.isNotEmpty == true || acgTags?.isNotEmpty == true || vidTags?.isNotEmpty == true; } /// 筛选面板里的一个选项,key 传给接口、name 给用户看 class TimeType { String? key; String? name; TimeType.fromJson(dynamic json) { key = json['key']; name = json['name']; } bool get isACG => name?.contains("动漫") == true || name?.contains("漫画") == true; Map toJson() => {'key': key, 'name': name}; } /// 用户当前选中的筛选组合,整个塞进请求参数 class Keyword { TimeType? canvas; TimeType? orderBy; Tags? tags; TimeType? paymentType; TimeType? timeType; Keyword(); Keyword.fromJson(dynamic json) { canvas = json['canvas'] != null ? TimeType.fromJson(json['canvas']) : null; orderBy = json['orderBy'] != null ? TimeType.fromJson(json['orderBy']) : null; tags = json['tags'] != null ? Tags.fromJson(json['tags']) : null; paymentType = json['paymentType'] != null ? TimeType.fromJson(json['paymentType']) : null; timeType = json['timeType'] != null ? TimeType.fromJson(json['timeType']) : null; } //拼给调用方比对「筛选条件有没有变」,不作他用 String get modelKey => "${canvas?.name}${orderBy?.name}${tags?.name}${paymentType?.name}${timeType?.name}"; Map toJson() => { 'canvas': canvas?.toJson(), 'orderBy': orderBy?.toJson(), 'tags': tags?.toJson(), 'paymentType': paymentType?.toJson(), 'timeType': timeType?.toJson(), }..removeWhere((key, value) => value == null); } /// 片库筛选结果:影视走 list,ACG 走 allMediaList class HomeVideoLibraryResult { bool? hasNext; List? list; List? allMediaList; HomeVideoLibraryResult.fromJson(dynamic json) { hasNext = json['hasNext']; list = (json['list'] as List?)?.map((e) => VideoModel.fromJson(e)).toList(); allMediaList = (json['allMediaList'] as List?)?.map((e) => CartoonMediaInfo.fromJson(e)).toList(); } }