[flutter] typedef

솜사탕·2025년 4월 21일
0

flutter

목록 보기
14/15
post-thumbnail

내가 발견한 문제점

item 이 가지고 있는 고유 seq마다 초기화를 해줘야하는 값과, 조건에 해당하면 변경해줘야하는 부분이 있다

시퀀스는 Item의 seq가 있고 grpSeq가 있는 상황이다

그때 사용한 방법

typedef ValueHandler = String? Function(String? value);
typedef DisplayHandler = void Function(List<ItemModel> items);

class ConditionEffect {
  final ValueHandler valueHandler;
  final DisplayHandler displayHandler;

  ConditionEffect({
    required this.valueHandler,
    required this.displayHandler,
  });
}

final Map<int, ConditionEffect> conditionEffects = {
  1: ConditionEffect(
    valueHandler: (v) => v == '특정값' ? '특정값' : null,
    displayHandler: (items) {
      for (var item in items) {
        if (item.itemSeq == 3 || item.itemSeq == 4) item.display = false;
        if (item.itemSeq == 2) item.itemName = '';
      }
    },
  ),
  50: ConditionEffect(
    valueHandler:(v == '원하는값' || v == '또다른값') ? v : null,
    displayHandler: (items) {
      for (var item in items) {
        if (item.applyValue == '원하는값') {
          item.display = item.itemSeq == 52;
        } else if (item.applyValue == '또다른값') {
          item.display = item.itemSeq == 53;
        }
      }
    },
  ),
  80: ConditionEffect(
    valueHandler: (v) =>
        (v == '형식' || v == '형형식') ? v : null,
    displayHandler: (items) {
      for (var item in items) {
        if (item.applyValue == '형식') {
          item.display = item.itemSeq == 89;
        } else if (item.applyValue == '형형식') {
          item.display = item.grpSeq == 36;
        }
      }
    },
  ),
  323: ConditionEffect(
    valueHandler: (v) =>
         v == '온도' ? '90' : '100',
    displayHandler: (items) {
      for (var item in items) {
        if (item.applyValue == '온도') {
          item.display = item.grpSeq == 109;
        } else {
          item.display = item.grpSeq == 108;
        }
      }
    },
  ),
};

타입을 새로 지정하는것, 그거에 맞게끔 내가 원하는 방향으로 수정이 가능하다는것
타입을 명시적으로 정의해야함

기존 코드가 너무나도 더러웠는데, 이렇게 하니 한눈에 들어오고
추가로 수정사항을 반영하기도 편한 방식으로 변경하게 되었다. 굿!

0개의 댓글