[Flutter 숙련] 개인 과제 - 지역 검색 앱

김동연·2025년 4월 21일

개인 과제 - 지역 검색 앱

1. 깃허브링크

2. 구현 기능

필수 기능

✅ 1. HomePage 구현
✅ 2. 네이버 검색 Open API 를 이용하여 지역 검색 기능을 구현

도전 기능

✅ 1. 현재 위치의 주소를 조회한 뒤 네이버 API로 검색합니다.
❎ 2. 나만의 기능 구현 x

3. 트러블 슈팅

권한 요청 실패

  • 문제: 앱 실행 중 GPS 아이콘을 눌러 현재 위치를 가져오려 했을 때 위치 권한을 허용했는데도 위치 값을 가져오지 못함

  • 해결 과정:

    • 전체적인 코드를 다시 확인.
    • 기존 home_view_model에서 searchByLocation을 병합하면서 제대로 작동하는가
    • Geolocator.requestPermission() 호출 여부
    • getPosition()에서 위치를 반환했는가
    • IOS에서 Info.plist 권한 설정 확인 등등
  • 해결:

Geolocator.requestPermission() 호출 여부

final permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied || ...) {
  final permission2 = await Geolocator.checkPermission(); // 여기도 다시 check만 함
}

실제로 권한을 요청하지 않았기 때문에, 사용자의 입력이 반영되지 않음

getPosition()에서 리턴 값을 빼먹음.

final position = await Geolocator.getCurrentPosition(...); 
// return이 없음

항상 null 또는 void로 처리되어 검색이 동작하지 않음. 위치 사용 권한을 허용했음에도 위치 정보를 가져오지 못함.

위 2가지 코드를 고치고 난 뒤 요청 성공.

2. 검색 결과가 1개만 나옴

  • 문제: 주소를 입력하면 네이버 API 결과가 1개만 나옴.

  • 원인: 네이버 지역 검색 API 기본 display 값이 1이였음. 검색 파라미터에 &display=5 등이 누락되어 하나의 결과 값만 나온 것. 문서에 작성되어있었지만, 제대로 확인하지 않았음.

  • 해결: 요청 URL에 &display=5 추가

'https://openapi.naver.com/v1/search/local.json?query=$query&display=5'

3. 상세 페이지 안 열림

  • 문제: 검색 결과로 나온 주소의 상세페이지가 열리지 않음.

  • 원인: 정확히는 모르겠지만, Https로 시작하는 주소가 아니거나, 링크를 지원하지 않는 경우가 있는 것 같음.

  • 해결: https로 시작하는 링크만 DetailPage로 이동(지원하지 않는 링크는 스낵바로 알림창 띄우게함.)

4. String 자리에 List<String>을 넣어서 타입 오류 발생

  • 문제: 아래의 오류 코드 발생.
The argument type 'List<String>' can't be assigned to the parameter type 'String'.
  • 원인: VWorld APIfindByLatLng() 반환형이 List<String>인데, 네이버 검색 함수 searchLocation(String query)String만 받음

  • 해결: 하나의 항목만 가져와서 검색하도록 함. ex)부산광역시 동래구 온천동

await searchLocation(addressList.first); // 첫 번째 주소만 넘김

4. 목표

  • 이번 과제는 새로운 개념을 제대로 습득하여 진행했다기는 어렵고, 모르는 부분은 강의를 보면서 따라하는 형식으로 진행하였다. 아무런 정보없이 혼자 개발하는 것에 대해 쉽지 않았고 앞으로 복습하면서 최대한 이해하면서 최소한의 도움으로 앱을 완성하는 것을 목표로 할 것이다.

0개의 댓글