decode method
Decodes a data
to a MessageTypeEnum.
If allowNull
is true and the data
cannot be decoded successfully,
then null is returned. However, if allowNull
is false and the data
cannot be decoded successfully, then an UnimplementedError is thrown.
The allowNull
is very handy when an API changes and a new enum value is added or removed,
and users are still using an old app with the old code.
Implementation
MessageTypeEnum? decode(dynamic data, {bool allowNull = true}) {
if (data != null) {
switch (data) {
case r'regular':
return MessageTypeEnum.regular;
case r'ephemeral':
return MessageTypeEnum.ephemeral;
case r'error':
return MessageTypeEnum.error;
case r'reply':
return MessageTypeEnum.reply;
case r'system':
return MessageTypeEnum.system;
case r'deleted':
return MessageTypeEnum.deleted;
default:
if (!allowNull) {
throw ArgumentError('Unknown enum value to decode: $data');
}
}
}
return null;
}