class Filtering { List filters; List whitelistFilters; List userRules; List blockedServices; int interval; bool enabled; Filtering({ required this.filters, required this.whitelistFilters, required this.userRules, required this.blockedServices, required this.interval, required this.enabled, }); factory Filtering.fromJson(Map json) => Filtering( filters: json["filters"] != null ? List.from(json["filters"].map((x) => Filter.fromJson(x))) : [], whitelistFilters: json["whitelist_filters"] != null ? List.from(json["whitelist_filters"].map((x) => Filter.fromJson(x))) : [], userRules: json["user_rules"] != null ? List.from(json["user_rules"].map((x) => x)).where((i) => i != '').toList() : [], blockedServices: json["blocked_services"] != null ? List.from(json["blocked_services"].map((x) => x)).where((i) => i != '').toList() : [], interval: json["interval"], enabled: json["enabled"], ); Map toJson() => { "filters": List.from(filters.map((x) => x.toJson())), "whitelist_filters": List.from(whitelistFilters.map((x) => x.toJson())), "user_rules": List.from(userRules.map((x) => x)), "blocked_services": List.from(blockedServices.map((x) => x)), "interval": interval, "enabled": enabled, }; } class Filter { final String url; final String name; final DateTime? lastUpdated; final int id; final int rulesCount; bool enabled; Filter({ required this.url, required this.name, required this.lastUpdated, required this.id, required this.rulesCount, required this.enabled, }); factory Filter.fromJson(Map json) => Filter( url: json["url"], name: json["name"], lastUpdated: json["last_updated"] != null && json["last_updated"] != '' ? DateTime.parse(json["last_updated"]) : null, id: json["id"], rulesCount: json["rules_count"], enabled: json["enabled"], ); Map toJson() => { "url": url, "name": name, "last_updated": lastUpdated != null ? lastUpdated!.toIso8601String() : null, "id": id, "rules_count": rulesCount, "enabled": enabled, }; } class ProcessedList { final Filter list; final bool successful; const ProcessedList({ required this.list, required this.successful }); }