[Flutter] Enum에서 함수 작성: extension, enum to string, string to enum

하스레·2022년 7월 27일
0

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;
    }
  }
}

Dart 2.17에서 변경된 enum

https://ctoahn.tistory.com/27

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

profile
Software Developer

0개의 댓글