| import 'definition.dart'; |
| import 'property.dart'; |
| |
| class Key { |
| final String stringValue; |
| final int intValue; |
| |
| bool get isMissing => intValue == null; |
| |
| Key(this.stringValue, this.intValue); |
| Key.forDefinition(Definition def) |
| : stringValue = def.name.toLowerCase(), |
| intValue = null; |
| Key.forProperty(Property field) |
| : stringValue = field.name.toLowerCase(), |
| intValue = null; |
| |
| Key withIntValue(int id) => Key(stringValue, id); |
| |
| factory Key.fromJSON(dynamic data) { |
| if (data is! Map<String, dynamic>) { |
| return null; |
| } |
| dynamic iv = data["int"]; |
| dynamic sv = data["string"]; |
| if (iv is int && sv is String) { |
| return Key(sv, iv); |
| } |
| return null; |
| } |
| |
| Map<String, dynamic> serialize() => |
| <String, dynamic>{"int": intValue, "string": stringValue}; |
| } |