class TourFile { late int index; late String name; String? remark; late String url; TourFile(); factory TourFile.fromJson(Map json) { final file = TourFile(); file.index = json['index'] as int; file.name = json['name'] as String; file.remark = json['remark'] as String?; file.url = json['url'] as String; return file; } Map toJson() { return { 'index': index, 'name': name, 'remark': remark, 'url': url, }; } bool get isPdf { return name.toLowerCase().endsWith('.pdf'); } bool get isImage { final ext = name.toLowerCase(); return ext.endsWith('.jpg') || ext.endsWith('.jpeg') || ext.endsWith('.png') || ext.endsWith('.gif') || ext.endsWith('.webp'); } }