Closed minseok-jeong-gn closed 5 months ago
안녕하세요. 먼저, 이슈를 제보해주셔서 감사드립니다. 해당 오류는 올바르지 않은 에셋 경로를 넣었을 때 발생하는 것으로 추정됩니다. assertion(debug error)으로 변경해야하지만 미처 변경하지 못하여 해당 충돌이 일어나고 있다고 보여집니다.
에셋 경로를 pubspec.yaml에 등록했는지, 에셋 경로를 정확히 입력하였는지 다시 한번 확인 부탁드립니다. 감사합니다.
올바른 에셋 경로를 넣었을 때 해당 오류가 발생하지 않는다면, 이슈를 닫아주시기 바라겠습니다. 감사합니다.
혹시 onMapReady에서 받아온 mapController에 바로 에셋 이미지로 마커를 그렸을때, onMapReady에서 받아오는 컨트롤러가 아직 native platform 단에서는 setup이 완료가 되지 않았을 가능성도 있을까요?
해당 현상은 네이버 지도가 있는 페이지에서 네이버 지도가 없는 페이지로 화면 전환후 다시 네이버 지도가 있는 페이지로 진입시 발생합니다. 네이버 지도가 있는 페이지는 동일한 페이지입니다.
해당 현상 관련해서 우회적으로, 아직 플랫폼 mapController가 setup 이 완료가 되지않았다고 판단해서, Future.delayed 를 걸어두고 그다음에 지도에 마커를 그리도록 하였더니 동작하고있습니다.
현재 이슈가 발생하는 코드(재현 가능 샘플)를 부탁드리겠습니다. 재현 확인 후, 원인 분석을 진행하도록 하겠습니다.
해당 코드로 테스트한 경우, 문제없이 동작하는 것을 확인하였습니다.
참고해주세요. (1.2.2-pre.1
버전 기준)
void onMapReady(NaverMapController controller) {
final markerTest = NMarker(
id: "t",
position: NaverMapViewOptions.seoulCityHall.target,
icon: NLocationOverlay.faceModeSubIcon);
controller.addOverlay(markerTest);
}
OnMapReady 호출이후 ios의경우 현재 정확히알수없지만 테스트결과 50ms 이전에 컨트롤러에 접근해 마커를 그릴시 위와같은 에러가 발생합니다. 네이티브쪽 타이밍 이슈이지않을까 추정됩니다.
안드로이드의경우 도 계속 크래시가 발생해 맵생성후 onCompleted호출될경우 그때부터 작업을진행하도록 변경한이후 크래시현상이 해결된것으로 보입니다. 허나 ios는 계속해서 크래시가 랜덤하게 발생하여 OnMapReady 이후 300ms 이후 컨트롤러를 사용하도록 변경이후 크래시가 나지않습니다. 300ms 는 임의로 설정한값이며 유저가 알아차리기 힘든 시간이라 설정하였습니다.
@minseok-jeong-gn
해당 코드의 실행 전에 실행된 것은 아닌지 확인 부탁드립니다.
WidgetsFlutterBinding.ensureInitialized();
또한, 말씀하신 현상과 조건만으로는 재현이 어렵습니다. 재현 가능한 최소한의 코드를 부탁드리겠습니다.
현재
flutter_naver_map 1.2.1
버전을 쓰고 있으면flutter 3.19.2
버전을 사용중에 있습니다.테스트한 디바이스는
iPhoneS XS
입니다.(ios 16.3)네이버 지도가 있는 화면으로 이동 중에 아래와 같은 에러가 발생하였습니다.
앱스토어 커넥트 충돌 피드백 첨부합니다.