2026.01.02 (금)
팀프로젝트 완료
트러블슈팅 및 회고록

Apple Market 입니다.
애플 기기만 중고로 이루어지는 앱을 구현해봤다.
구현하면서 많은 어려움을 겪었고, 관련된 문제를 트러블 슈팅 작성해보려고 한당..
Home - Write - Detail - Cart page로 구성각 페이지를 독립적인 StatefulWidget으로 개발하다보니, 데이터를 보내고 받는 상황에서 빈 리스트로 표시되는 현상이 발생했다.

위에서 아래로 흐르는 구조로 페이지 이동 시에 새로운 페이지는 기존 페이지의 데이터를 자동으로 상속받지 않기 때문에 명시적으로 데이터를 넘겨주지 않으면 새로운 페이지는 초기 상태로 렌더링 된다.
공통 부모를 관리하고, 최상위 루트에서 데이터를 관리하는 구조로 변경
최상위 부모 위젯에 공통 리스트 (cartList)를 선언
final List<Item> cartList = [];
final List<Item> itemList = [];
void onChangeCartList(List<Item> newItem) {
setState((){
final tempItems = [...newItems];
cartList.clear();
cartList.addAll(tempItems);
});
}
리스트에 아이템을 추가/삭제할 수 있는 함수를 자식 위젯에 사용
onItemDeleted(int) : 장바구니 목록을 보여주고, 특정 번호의 아이템을 지워달라고 부모에게 요청하는 역할
item, cartList : 전달 대기 중으로 상세 정보를 보여주기 위해 보무로부터 데이터를 받아오는 다리 역할을 함
addItem(Item) : 하단 바에서 '담기' 버튼을 누르면 현재 아이템을 추가해달라고 부모에게 요청
생성자(Constructor)를 통해 자식 위젯에게 데이터와 함수를 주입시켜서 사용자의 선택에 따라서 데이터를 전달 할 수 있었다.
시간이 정말 빠르게 지나갔다. 팀 프로젝트를 하면서 느낀게 너무나 많았다. 협업을 할 때는 소통이 제일 중요하고, 현재 어떤 작업을 이런 식으로 했는데 어떻게 해결할건지와 문제점이 왜 발생했는지에 대한 분석을 함께 했으면 어땠을까 라는 생각이 많이 들었다. 🤔
다음 프로젝트는 더 잘 해내고 싶다...! 우리 팀원들 고생 많았고,,, 다들 실력이 향상되었으면 좋겠다