import 'dart:convert'; T? asT(dynamic value) { if (value is T) { return value; } return null; } class ComicDetailV1Model { ComicDetailV1Model({ required this.info, required this.list, required this.alone, }); factory ComicDetailV1Model.fromJson(Map json) { final List? list = json['list'] is List ? [] : null; if (list != null) { for (final dynamic item in json['list']!) { if (item != null) { list.add(ComicDetailV1ChapterModel.fromJson( asT>(item)!)); } } } final List? alone = json['alone'] is List ? [] : null; if (alone != null) { for (final dynamic item in json['alone']!) { if (item != null) { alone.add(ComicDetailV1ChapterModel.fromJson( asT>(item)!)); } } } return ComicDetailV1Model( info: ComicDetailV1InfoModel.fromJson( asT>(json['info'])!), list: list!, alone: alone!, ); } ComicDetailV1InfoModel info; List list; List alone; @override String toString() { return jsonEncode(this); } Map toJson() => { 'info': info, 'list': list, 'alone': alone, }; } class ComicDetailV1InfoModel { ComicDetailV1InfoModel({ required this.id, required this.title, required this.subtitle, required this.types, required this.zone, required this.status, required this.lastUpdateChapterName, required this.lastUpdatetime, required this.cover, required this.authors, required this.description, required this.firstLetter, required this.direction, required this.islong, required this.copyright, }); factory ComicDetailV1InfoModel.fromJson(Map json) => ComicDetailV1InfoModel( id: asT(json['id'])!, title: asT(json['title'])!, subtitle: asT(json['subtitle'])!, types: asT(json['types'])!, zone: asT(json['zone'])!, status: asT(json['status'])!, lastUpdateChapterName: asT(json['last_update_chapter_name'])!, lastUpdatetime: asT(json['last_updatetime'])!, cover: asT(json['cover'])!, authors: asT(json['authors'])!, description: asT(json['description'])!, firstLetter: asT(json['first_letter'])!, direction: asT(json['direction'])!, islong: asT(json['islong'])!, copyright: asT(json['copyright'])!, ); String id; String title; String subtitle; String types; String zone; String status; String lastUpdateChapterName; String lastUpdatetime; String cover; String authors; String description; String firstLetter; String direction; String islong; String copyright; @override String toString() { return jsonEncode(this); } Map toJson() => { 'id': id, 'title': title, 'subtitle': subtitle, 'types': types, 'zone': zone, 'status': status, 'last_update_chapter_name': lastUpdateChapterName, 'last_updatetime': lastUpdatetime, 'cover': cover, 'authors': authors, 'description': description, 'first_letter': firstLetter, 'direction': direction, 'islong': islong, 'copyright': copyright, }; } class ComicDetailV1ChapterModel { ComicDetailV1ChapterModel({ required this.id, required this.comicId, required this.chapterName, required this.chapterOrder, required this.filesize, required this.createtime, required this.updatetime, }); factory ComicDetailV1ChapterModel.fromJson(Map json) => ComicDetailV1ChapterModel( id: asT(json['id'])!, comicId: asT(json['comic_id'])!, chapterName: asT(json['chapter_name'])!, chapterOrder: asT(json['chapter_order'])!, filesize: asT(json['filesize'])!, createtime: asT(json['createtime'])!, updatetime: asT(json['updatetime'])!, ); String id; String comicId; String chapterName; String chapterOrder; String filesize; String createtime; String updatetime; @override String toString() { return jsonEncode(this); } Map toJson() => { 'id': id, 'comic_id': comicId, 'chapter_name': chapterName, 'chapter_order': chapterOrder, 'filesize': filesize, 'createtime': createtime, 'updatetime': updatetime, }; }