✅ 1. HomePage 구현
✅ 2. 네이버 검색 Open API 를 이용하여 지역 검색 기능을 구현
✅ 1. 현재 위치의 주소를 조회한 뒤 네이버 API로 검색합니다.
❎ 2. 나만의 기능 구현 x
문제: 앱 실행 중 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가지 코드를 고치고 난 뒤 요청 성공.
문제: 주소를 입력하면 네이버 API 결과가 1개만 나옴.
원인: 네이버 지역 검색 API 기본 display 값이 1이였음. 검색 파라미터에 &display=5 등이 누락되어 하나의 결과 값만 나온 것. 문서에 작성되어있었지만, 제대로 확인하지 않았음.
해결: 요청 URL에 &display=5 추가
'https://openapi.naver.com/v1/search/local.json?query=$query&display=5'
문제: 검색 결과로 나온 주소의 상세페이지가 열리지 않음.
원인: 정확히는 모르겠지만, Https로 시작하는 주소가 아니거나, 링크를 지원하지 않는 경우가 있는 것 같음.
해결: https로 시작하는 링크만 DetailPage로 이동(지원하지 않는 링크는 스낵바로 알림창 띄우게함.)
String 자리에 List<String>을 넣어서 타입 오류 발생The argument type 'List<String>' can't be assigned to the parameter type 'String'.
원인: VWorld API의 findByLatLng() 반환형이 List<String>인데, 네이버 검색 함수 searchLocation(String query)는 String만 받음
해결: 하나의 항목만 가져와서 검색하도록 함. ex)부산광역시 동래구 온천동
await searchLocation(addressList.first); // 첫 번째 주소만 넘김