Flutter Enum에서 함수 작성하는 방법: Extension 사용
예시코드
enum UserLevel { LV1, LV2, LV3, LV4 }
extension UserLevelExtension on UserLevel {
String get label {
switch (this) {
case UserLevel.LV1:
return '새싹회원';
case UserLevel.LV2:
return '잔디회원';
default:
return '나무회원';
}
}
// toString()은 'UserLevel.LV1'을 반환하므로
// toShortString()을 둬서 'LV1', 'LV2' 이런식으로 반환하게함.
String toShortString() {
return toString().split('.').last;
}
}
+) string -> enum으로 바꾸는 법
extension UserLevelString on String {
UserLevel get strToUserLevelEnum {
switch (this) {
case 'LV1':
return UserLevel.LV1;
case 'LV2':
return UserLevel.LV2;
default:
return UserLevel.LV3;
}
}
}
enum class내에서 함수 작성 가능
enum UserLevel {
LV1(1,'새싹회원'),
LV2(2,'잔디회원'),
LV3(3,'나무회원');
const UserLevel(this.level, this.label);
final int level;
final String label;
static UserLevel strToEnum(String str) {
return UserLevel.values.byName(str);
}
}
※ name을 사용하여, UserLevel.LV1.name 이런식으로 'LV1'이렇게 string으로 가져올 수 있다.
https://stackoverflow.com/questions/38908285/how-do-i-add-methods-or-values-to-enums-in-dart
https://stackoverflow.com/questions/27673781/enum-from-string