Skip to content

Instantly share code, notes, and snippets.

@minikin
Created July 14, 2020 14:03
Show Gist options
  • Save minikin/091dc8c6b4753779f5dd066ba6a90e0a to your computer and use it in GitHub Desktop.
Save minikin/091dc8c6b4753779f5dd066ba6a90e0a to your computer and use it in GitHub Desktop.
import 'dart:convert';
void main() {
final event = EposEvent(EposEventType.connect, {'key': 'value'});
final jsonObject = event.toJson();
print(event);
print(jsonObject);
}
class EposEvent {
final EposEventType type;
final Map<String, Object> data;
const EposEvent(this.type, this.data);
Map<String, Object> toJson() {
return {
'type': type.keyFromEventTypeMap,
'data': data,
};
}
@override
String toString() => jsonEncode(toJson());
static EposEvent fromJson(Map<String, Object> json) {
return EposEvent(
eventTypesMap[json['type']],
json['data'],
);
}
}
final Map<String, EposEventType> eventTypesMap = {
'DISCOVERY': EposEventType.discovery,
'CONNECT': EposEventType.connect,
'DISCONNECT': EposEventType.disconnect,
'RECONNECTING': EposEventType.reconnecting,
'RECONNECT': EposEventType.reconnect,
'SCAN': EposEventType.scan
};
enum EposEventType {
discovery,
connect,
disconnect,
reconnecting,
reconnect,
scan
}
extension EposEventTypeExtension on EposEventType {
String get keyFromEventTypeMap {
return eventTypesMap.keys.firstWhere((k) => eventTypesMap[k] == this);
}
}
@minikin
Copy link
Author

minikin commented Jul 14, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment