일주일간의 첫 프로젝트
WIL(Weekly I Learned)
Swift를 배우는 본 캠프에 앞서 일주일간 flutter 프로젝트를 가볍게 시작했습니다.
I1E4로 활기차게 시작했던 팀이 결국 I1E2로 바뀌기까지 많은 우여곡절이 있었지만 열심히 따라와준 팀원들 덕분에 나름 성공적인 결과물을 낼 수 있었습니다.
개발을 해보지 않은 팀원분들과 git을 개인 업로드 공간 정도로만 사용해온 저의 첫 협업은 쉽지 않았습니다.
공유 레포를 하나 파고 clone만 거친 상태로 서로 맡은 조각들을 만들어 나가기 시작하였고 이틀차에야 처음으로 PR을 올려서 퍼즐을 맞추기 시작하자 알 수 없는 오류들이 쏟아져나왔습니다…
github 사용에 많은 애를 먹고 수없이 많은 conflict, 수업이 많은 re-clone 과정을 겪어가며 저를 포함한 팀원 모두 조금씩 git과 친해지고 있었습니다.
프로젝트 제출날인 어제가 되어서야 우리팀은 모두 막힘없이 push를 할 수 있게 되었고 모두 조금씩 자신감이 붙는 듯 했습니다.
프로젝트는 페이지 별로 분업을 구성하였고 각자 맡은 부분의 디자인을 짜는 것을 첫번째 목표로 삼았습니다.
처음 시작을 할때 primary color, font size, 어느정도의 theme등을 고려하지 않고 무작정 페이지를 나눠서 진행하였기에
페이지를 합친 뒤 통일성을 가지고 다듬는 작업에 예상치 못했던 시간이 필요하게 되었고, github의 첫 사용 또한 발목을 잡았습니다.
그래도 프로젝트를 진행하는 취지에 맞게 남은 세명의 인원이 모두 CRUD기능 구현에 참여했으면 하는 마음에서 역할을 나누어서 진행하였습니다.
- Create
TextButton( onPressed: () { memberService.createMember(newMember: newMember); Navigator.of(context).pop(); }, child: Text("저장"), ), - Update
TextButton( child: Text('Save'), onPressed: () { service.updateMember( index: index, name: _nameController.text, mbti: _mbtiController.text, city: _cityController.text, comment: _commentController.text); Navigator.of(context).pop(); }, ), - Delete
TextButton( onPressed: () { memberService.deleteMember(index: index); Navigator.of(context).pop(); }, child: Text("확인"), ),
기본적인 기능 구현에는 큰 어려움이 없었으나 저 역시 flutter는 처음이었기에 원하는 기능을 다 추가 하기에는 시간이 부족한감이 있었습니다.
무엇보다 큰 문제는 갤러리 사진 선택 기능 이었습니다. 멤버를 추가하거나 수정하는 과정에서 휴대폰 갤러리에 접근하여 원하는 사진을
선택하여 등록하는 기능을 만들고 싶었으나, DB로 sharedPreferences를 사용하는 한계와 permission 획득에 관한 지식이 부족했기에
4일이라는 프로젝트 예정 기간동안 구현을 하는데에는 어려움이 있었습니다.
-> 갤러리 접근까지 성공하였고 ImagePicker 라이브러리를 이용하여 XFile 형식의 이미지를 가져오면서 path값을 얻을 수 있었고,
그대로 저장했다가 불러오는 과정까지 성공
-> 이런 과정에서 불러오는 path값은 메모리에 임시저장되는 경로이므로 절대주소가 아니다. 따라서 앱이 실행되는 기간에는 충분히 주소에 맞는
데이터의 유지가 가능하지만, 재실행시에는 똑같은 path값으로 이미지를 불러오는 방식에는 무리가 있을 수 있다.
-> 즉, 안될 가능성이 있다. (개발에서는 안될 가능성이 있다 = 안된다)
결국 이미지 로드는 네트워크 통신을 이용하여 팀원들의 사진 정도만 저장하고 멤버의 생성 / 추가 과정에서의 이미지 저장은 포기하였습니다.
최종결과물
댓글남기기