2021.06 - 2022.02
Flutter Dart
<aside> <img src="/icons/arrow-southeast_gray.svg" alt="/icons/arrow-southeast_gray.svg" width="40px" /> 목록으로 돌아가기
</aside>
<aside> <img src="/icons/phone_gray.svg" alt="/icons/phone_gray.svg" width="40px" /> 01. Main
전화번호로 로그인, firebase를 사용한 소셜 계정 로그인 두가지를 모두 제공하였습니다.
APM HTTP 서버에서 배너사진, 특정 공지등을 get해서 화면에 출력했습니다. 또한 firebase messaging을 사용하여 운영팀에서 프로모션 알림을 보낼수있게 만들었습니다.
왼쪽 상단 버튼을 눌러 계정 닉네임, 전화번호, 로그인 설정을 할 수 있습니다.
오른쪽 상단 버튼을 눌러 새 화면에서 현재 위치를 설정할수있습니다.
사용 Package

</aside>
<aside> <img src="/icons/phone_gray.svg" alt="/icons/phone_gray.svg" width="40px" /> 02. ShopList
User가 APM HTTP 서버로 세션, 카테코리(Index 값), GPS값을 POST하면 MySql 에서 가게들이 설정한 반경을 계산하여 해당하는 가게 정보를 JSON으로 반환하였습니다.
당시 Flutter Null Safety가 도입된 초창기였고 서버에서 데이터를 반환받기 전에 Scaffold가 그려지며 Null safety 오류가 발생했습니다. 이 부분을 initstate에 async await를 추가로 사용하여 해결했습니다.
사용 Package

</aside>
<aside> <img src="/icons/phone_gray.svg" alt="/icons/phone_gray.svg" width="40px" /> 03. ShopContent
User가 가게를 선택하고 가게 index와 세션을 서버로 POST하면 가게 정보와 시공가격을 JSON으로 반환했습니다.
url_launcher를 사용하여 user가 전화, 문자 버튼을 누르면 바로 화면이 전환되게 제작했습니다.
사용 Package


</aside>
<aside> <img src="/icons/phone_gray.svg" alt="/icons/phone_gray.svg" width="40px" /> 04. ShopReview
User가 후기 버튼을 누름과 동시에 APM HTTP 서버로 세션, 카테코리(Index 값)를 POST하면 MySql 에서 해당 가게의 리뷰를 불러와주었습니다.
리뷰 이미지는 크게 확대하여 볼수있게 따로 ImageView 클래스를 만들고 사진을 클릭하면 ImageView.dart로 이미지 링크를 넘겨주며 새로 불러와 확대하여 볼수있게 만들었습니다.
또한 후기를 작성할때는 사진을 휴대폰 앨범에서 불러와 글과 함께 업로드 할 수 있게 만들었습니다.
당시 스토어 정책으로 신고버튼을 만들었고 신고를 10개 이상 받으면 자동 블라인드 되게 만들었습니다.
사용 Package

</aside>