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;
}
}
},
),
};
타입을 새로 지정하는것, 그거에 맞게끔 내가 원하는 방향으로 수정이 가능하다는것
타입을 명시적으로 정의해야함
기존 코드가 너무나도 더러웠는데, 이렇게 하니 한눈에 들어오고
추가로 수정사항을 반영하기도 편한 방식으로 변경하게 되었다. 굿!