반응형
enum 기본 적인 사용 방법 및 용도
다른 언어와 마찬가지로 Flutter에서 지원하는 dart에서도 enum을 사용할 수 있습니다. enum은 열거형 상수로 어떤 int 값에 영문 상수명을 지정하여 영문 상수명으로 int 값을 가져올 수 있습니다.
enum Color { red, green, blue }
간단하게 위 Color enum은 red = 0, green = 1, blue = 2가 매칭됩니다.
print(Color.red) // 0 출력
따라서 print 인수에다 Color.red를 입력하면 0이 출력됩니다. 이렇게 어떤 숫자에 영문 상수명을 부여해서 조건문이나, 어떤 숫자 혹은 코드가 특별한 의미를 가질 때 사용하면 인적오류를 범할 가능성이 낮아지고 코드가 직관적으로 보입니다.
enum 활용 방법
예전 버전에서는 이렇게 단순하게 선언하는 것이 한계 였지만, 2.17 버전부터는 enum의 활용도가 급증했습니다.
enum Vehicle implements Comparable<Vehicle> {
car(tires: 4, passengers: 5, carbonPerKilometer: 400),
bus(tires: 6, passengers: 50, carbonPerKilometer: 800),
bicycle(tires: 2, passengers: 1, carbonPerKilometer: 0);
const Vehicle({
required this.tires,
required this.passengers,
required this.carbonPerKilometer,
});
final int tires;
final int passengers;
final int carbonPerKilometer;
int get carbonFootprint => (carbonPerKilometer / passengers).round();
bool get isTwoWheeled => this == Vehicle.bicycle;
@override
int compareTo(Vehicle other) => carbonFootprint - other.carbonFootprint;
}
위와 같이 enum을 class처럼 선언하는 것이 가능해졌기 때문입니다. 변수와 생성자를 선언할 수 있어, 한 상수로 나타낼 수 있는 값들이 많아졌습니다. 위 코드에서 car 상수로 예를 들면,
Vehicle.car.tires // 4
Vehicle.car.passengers // 5
Vehicle.car.carbonPerKilometer // 400
한 상수로 3개의 값을 표현하는 것이 가능해집니다. 마치 클래스에서 property를 사용하는 것과 비슷하죠. 위의 예에서는 property 타입을 int로만 사용했지만, bool, double, String 등 다른 자료형도 사용 가능합니다. 또한 함수를 선언하는 것도 가능합니다.
void main() {
Color.values.forEach((v) => print('value: $v, index: ${v.index}'));
}
위와 같이 values를 사용하면 enum을 list로 활용할 수도 있고, foreach문도 사용할 수 있습니다.
참고 사이트
반응형
'개발 > FLUTTER' 카테고리의 다른 글
[Flutter] image 파일의 image 사이즈 조절하기 (0) | 2024.02.11 |
---|---|
[Flutter] 이미지 파일 용량 줄이기 (0) | 2024.02.11 |
[Flutter] json 객체 배열 파싱하는 방법 (0) | 2024.02.01 |
[FLUTTER] COLUMN 제약조건(UNBOUNDED HEIGHT) (0) | 2024.01.31 |
[Flutter] json 변환하는 방법 (0) | 2024.01.31 |