| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- println
- riverpod
- abap
- scss
- DART
- LLM
- 단축키
- ListView
- firebase
- 배포
- printf
- 엡
- develop
- Clean Architecture
- Flutter
- 앱심사
- UI/UX
- unity
- lifecycle
- JQ
- java 출력
- java
- 자바 포맷 출력
- react
- JS
- 자바스크립트
- 자바 출력 방식
- npm
- nodejs
- java 콘솔 출력 차이
- Today
- Total
guricode
CLI 쇼핑몰 구현 중 Cart list에 중복된 아이템 입력됨 트러블 슈팅 본문
콘솔 기반의 Dart 쇼핑몰 프로그램에서, 장바구니(Cart)에 동일한 상품명을 입력하면 새로운 객체가 생성되어 리스트에 계속 중복으로 추가되는 현상이 발견되었다.
배경 :
장바구니에 상품을 추가하는 기능을 테스트하던 중,
같은 이름의 상품을 여러 번 입력하면 장바구니에 여러 개의 같은 상품 항목이 생기는 걸 확인했다.
발단 :
사용자가 "Stun Gun 1"을 두 번 입력하면, 장바구니에
Stun Gun x1
Stun Gun x1
이 두 개의 인스턴스가 생겼다.
총 가격은 제대로 계산되었지만, 사용자 입장에서 보면 중복 항목이 쌓이는 불편한 UX가 생겼다.
전개 :
처음엔 List.contains()를 통해 중복 여부를 확인하려 했지만,
Dart에서는 List.contains()가 기준으로 동작하기 때문에,
Product('Stun Gun', 2010, 1)과 같은 데이터라도 계속 다른 인스턴스로 인식했다.
위기 :
List.contains()나 List.where()로는 단순히 name만 비교해서 같은 상품인지 확인할 수 없었다.
결과적으로 사용자가 의도한 “하나의 상품에 수량만 증가”하는 구조를 만들 수 없었다.
절정 : 근본적인 해결을 위해 리스트 추가 전 수동으로 존재 여부 확인 후 갱신하는 방식을 적용하였다.

그리고 Cart 클래스를 분리하여 보수에 용이하도록 하였다.
결말 :
중복 상품이 입력될 경우
새로운 객체를 추가하는 것이 아니라, 기존 상품의 itemCount와 price를 갱신하도록 구현하였다.
이렇게 수정한 결과:
장바구니에서 동일한 상품은 한 줄로만 표현됨
수량과 가격만 누적되어 사용자에게 자연스러운 사용성을 제공
'앱 > Flutter&Dart' 카테고리의 다른 글
| 객체지향 프로그래밍 - static (0) | 2025.07.04 |
|---|---|
| [CLI RPG] 몬스터의 랜덤데미지가 처음에만 적용되던 버그 (0) | 2025.07.03 |
| Dart - 예외 처리 (0) | 2025.06.25 |
| 한눈에 보는 클래스와 메서드 요약 (0) | 2025.06.25 |
| 자주쓰는 메서드 체이닝 (0) | 2025.06.24 |