# 56. 상점 UI 및 로직 디버깅 (Shop UI & Logic Debugging) ## 1. 목표 (Goal) - 상점 구매 기능이 정상적으로 작동하지 않는 문제(성공 시에도 빨간색 에러 메시지 표시 등)를 해결합니다. - `ShopUI`에서 `ShopProvider`와의 연동 로직을 개선하여 사용자 피드백(SnackBar)을 명확하게 만듭니다. ## 2. 구현 상세 (Implementation Details) ### `ShopUI` 수정 - **구매 확인 다이얼로그 (`_showBuyConfirmation`):** - 기존: `buyItem` 호출 후 결과 확인 없이 다이얼로그 닫음 + `ShopProvider`의 메시지 상태에 의존하여 `build` 메서드에서 스낵바 출력 (타이밍 이슈 및 색상 고정 문제 발생). - **변경:** `shopProvider.buyItem(item, player)`의 `bool` 반환값을 직접 확인. - **성공 (`true`):** 다이얼로그 닫고 **초록색** "Bought [Item Name]" 스낵바 출력. - **실패 (`false`):** 다이얼로그 닫고 **빨간색** 에러 메시지(Provider의 `lastShopMessage`) 스낵바 출력. - **불필요한 코드 제거:** `build` 메서드 내의 `WidgetsBinding.instance.addPostFrameCallback` 블록 삭제. ### `ShopProvider` 확인 - `buyItem` 메서드는 이미 성공/실패 여부를 `bool`로 반환하고, 실패 시 `_lastShopMessage`를 설정하도록 잘 구현되어 있음. (수정 불필요) ## 3. 결과 (Result) - 상점 아이템 구매 성공 시 정상적으로 초록색 메시지가 뜨고, 골드 부족이나 인벤토리 가득 참 등의 실패 시에는 빨간색 에러 메시지가 뜹니다. - 구매 로직과 UI 피드백이 동기화되어 사용자 혼란을 방지했습니다.