note11g / flutter_naver_map

Naver Mobile Dynamic Map SDK for Flutter (unofficial)
BSD 3-Clause "New" or "Revised" License
143 stars 69 forks source link

controller가 할당되기 전 dispose될 때 오류 발생 #197

Closed ezzooooo closed 8 months ago

ezzooooo commented 8 months ago

에러 코드 :

The following LateError was thrown while finalizing the widget tree: LateInitializationError: Field 'controller' has not been initialized.

When the exception was thrown, this was the stack:

0 _NaverMapState.controller (package:flutter_naver_map/src/widget/map_widget.dart)

1 _NaverMapState.dispose (package:flutter_naver_map/src/widget/map_widget.dart:121:5)

map_widget.dart:121

2 StatefulElement.unmount (package:flutter/src/widgets/framework.dart:5689:11)

framework.dart:5689

3 _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2076:13)

framework.dart:2076

4 _InactiveElements._unmount. (package:flutter/src/widgets/framework.dart:2074:7)

framework.dart:2074

5 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)

framework.dart:5532

6 _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2072:13)

framework.dart:2072

7 _InactiveElements._unmount. (package:flutter/src/widgets/framework.dart:2074:7)

framework.dart:2074


image 위 함수가 호출되기 전에 dispose 함수가 호출될 경우 오류 발생.

다른 지도 라이브러리는 어떨까해서 찾아봤는데 google_maps_flutter의 경우에는 Completer를 사용하여 controller를 할당하고 사용하고 있습니다.

image

image

image

컨트롤러가 초기화되기 전에 dispose가 호출될 경우에 대한 예외처리가 필요할 것 같습니다!

note11g commented 8 months ago

ff02c0a

혹시 해당 커밋으로 수정되었는지 테스트 가능하실까요? 제가 테스트해보았을 때는 >150ms까지는 커버되는 것으로 보입니다.

수정사항에 대한 테스트는 다음과 같이 dependency를 설정해주시면 해보실 수 있습니다.

flutter_naver_map: ^1.2.2-pre.1