import 'package:google_maps_cluster_manager_2/google_maps_cluster_manager_2.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; // class Device { // int? offset; // List? items; // Device({ // this.offset, // this.items, // }); // Device.fromJson(Map json) { // offset = json['offset']; // if (json['items'] != null) { // items = []; // json['items'].forEach((v) { // items!.add(Item.fromJson(v)); // }); // } // } // } class Device with ClusterItem { String? extId; String? thingId; String? thingKey; List? channels; String? areaPath; String? fvers; String? name; HardwareInfo? hardwareInfo; Settings? settings; Status? status; DateTime? connectionTime; int? state; String? visibility; DateTime? createdAt; DateTime? updatedAt; Device({ this.extId, this.thingId, this.thingKey, this.channels, this.areaPath, this.fvers, this.name, this.hardwareInfo, this.settings, this.status, this.connectionTime, this.state, this.visibility, this.createdAt, this.updatedAt, }); Device.fromJson(Map json) { extId = json['ext_id']; thingId = json['thing_id']; thingKey = json['thing_key']; if (json['channels'] != null) { channels = []; json['channels'].forEach((v) { channels!.add(v); }); } areaPath = json['area_path']; fvers = json['fvers']; name = json['name']; hardwareInfo = json['hardware_info'] != null ? HardwareInfo.fromJson(json['hardware_info']) : null; settings = json['settings'] != null ? Settings.fromJson(json['settings']) : null; status = json['status'] != null ? Status.fromJson(json['status']) : null; connectionTime = DateTime.parse(json['connection_time']); state = json['state']; visibility = json['visibility']; createdAt = DateTime.parse(json['created_at']); updatedAt = DateTime.parse(json['updated_at']); } static List fromJsonDynamicList(List list) { return list.map((e) => Device.fromJson(e)).toList(); } @override LatLng get location { double latitude = double.tryParse(settings?.latitude ?? '') ?? 34.639971; double longitude = double.tryParse(settings?.longitude ?? '') ?? -39.664027; return LatLng(latitude, longitude); } } class HardwareInfo { String? gsm; String? imei; String? imsi; String? phone; DateTime? updatedAt; HardwareInfo({ this.gsm, this.imei, this.imsi, this.phone, this.updatedAt, }); HardwareInfo.fromJson(Map json) { gsm = json['gsm']; imei = json['imei']; imsi = json['imsi']; phone = json['phone']; updatedAt = DateTime.parse(json['updated_at']); } } class Settings { String? latitude; String? longitude; DateTime? updatedAt; Settings({ this.latitude, this.longitude, this.updatedAt, }); Settings.fromJson(Map json) { latitude = json['latitude']; longitude = json['longitude']; updatedAt = DateTime.parse(json['updated_at']); } } class Status { int? readOffset; List? sensors; DateTime? updatedAt; Status({ this.readOffset, this.sensors, this.updatedAt, }); Status.fromJson(Map json) { readOffset = json['read_offset']; if (json['sensors'] != null) { sensors = []; json['sensors'].forEach((v) { sensors!.add(Sensor.fromJson(v)); }); } updatedAt = DateTime.parse(json['updated_at']); } } class Sensor { String? name; int? value; int? time; dynamic x; Sensor({this.name, this.value, this.time, this.x}); Sensor.fromJson(Map json) { name = json['n']; value = json['v']; time = json['t']; x = json['x']; } }