import 'location_alarm.dart'; import 'time_alarm.dart'; abstract class Alarm { String get id; Map toJson(); factory Alarm.fromJson(Map json) { if (json.containsKey('triggerAt')) { return TimeAlarm.fromJson(json); } if (json.containsKey('location')) { return LocationAlarm.fromJson(json); } throw ArgumentError('Unknown alarm type'); } @override bool operator ==(Object other) { if (other is! Alarm) return false; return hashCode == other.hashCode; } @override int get hashCode => id.hashCode; }