플러터 함수 실행에 대해 질문있습니다
/// 마커 터치 동작과 아이콘 수정
Future<Marker> Function(Cluster<Place>) _markerBuilder(BuildContext context) =>
(cluster) async {
return Marker(
markerId: MarkerId(cluster.getId()),
position: cluster.location,
onTap: () async {
cluster.items.forEach((element) {
log("${element.plcaeId.toString()}");
});
log("${context} 컨텍스트");
await locationWidgetUtil.buildShowModalBottomSheet(context!);
},
icon: await _locationUtil.getMarkerBitmap(
cluster.isMultiple ? 125 : 77,
text: cluster.isMultiple ? cluster.count.toString() : null),
);
};
/// 근처 플레이스 검색해서 마커 겹치는 정도 컨트롤
Future<void> initClusterManager(double lat, double lng) async {
List<Place> placeCluster =
await _locationUtil.nearSearchPlace(LatLng(lat, lng));
log("${placeCluster.length} 길이입니다.");
_clusterManager = ClusterManager<Place>(placeCluster, _updateMarkers,
markerBuilder: _markerBuilder(_context!),
levels: const [1, 4.25, 6.75, 8.25, 11, 14, 16, 17, 20.0]);
log("${_clusterManager!.items.length}아이템 길이이므니다");
notifyListeners();
}
/// 겹치는 마커 안겹치는 마커 다시 그리는 용도
void _updateMarkers(Set<Marker> markers) {
_markerList = markers;
notifyListeners();
}var pl = Provider.of<LocationNotifier>(context,listen: false);
await pl.getPosition();
pl.setContext(context);
await pl.initClusterManager(pl.current.latitude,pl.current.longitude);아래 코드에서 pl.initClusterManager를 실행하면 정상적으로 _markerBuilder가 잘 실행되면서 다음 페이지로 넘어가는데 다시 pl.initClusterManager를 호출하면 _markerBuilder에 로그를 넣어보니 로그가 아예 실행이 안되는데 처음할 때는 실행이 되는데 한 번 더 입력하면 실행이 안되는지 이유를 모르겠습니다.
위에 코드는 Provider쪽 파일입니다.
답변 1
0
안녕하세요 정충효님, 인프런 AI 인턴이에요.
현재 코드 상황에서 문제가 발생한 이유를 정확히 파악하기 위해서는 좀 더 상세한 정보가 필요합니다. 하지만 일반적으로 동일한 메서드가 처음에는 정상적으로 실행되지만, 두 번째 호출부터는 실행되지 않을 경우 다음과 같은 이유들을 확인해 볼 수 있습니다.
initClusterManager가 한 번 실행된 상태에서 다시 호출될 때, 해당 메서드 내부에서 사용되는 변수들이 예상한 값과 다르게 설정되는 경우가 있을 수 있습니다. 변수들의 초기화나 조건문들을 확인해보시는 것이 좋습니다.initClusterManager가 실행될 때 같은 객체들이 반복적으로 생성되는 문제가 있을 수 있습니다. 이를 방지하기 위해서는 해당 객체들의 생성과 초기화를 적절한 위치에 배치해야 합니다.initClusterManager메서드 내에서 await로 비동기 작업들이 수행되는데, 해당 비동기 작업이 예상하지 못한 에러를 발생시키거나 제대로 완료되지 않아 다음 호출 시에 영향을 줄 수 있습니다. 비동기 작업들을 주의깊게 검토하여 문제가 없는지 확인해보세요.
더 자세한 정보를 제공해주신다면 더 정확한 도움을 드릴 수 있을 것입니다. 감사합니다.
6강에 비디오가 이상해요
0
27
2
질문있습니다!
0
20
0
SEO에 대해
1
61
2
실로폰 음원 재생 오류 해결 (do.1.wav)
1
72
2
Emulate Device Frame 관련 질문입니다.
0
90
2
감사합니다!!
0
56
2
전체 코드 받을 수 있나요?
0
98
1
강의 듣는 중 얻은 경험 공유.
1
92
1
역시,, 클린 코드가 중요하네요..
0
67
1
seo 강의
0
86
2
코드 효율성 질문
0
50
1
124강 DB에 Todo 등록
0
78
1
webview import가 원활하지 않습니다 도와주세요
0
117
3
webview 버전
0
106
2
섹션3. 비만도계산기 문자열 입력가능 오류 관련
0
94
2
appbar 오류
0
62
2
mac 사용자만 들으면 되는 강의인가요?
0
67
2
Error: Unable to find git in your PATH.
0
189
2
60. 053. 결과화면 작성
0
59
1
마스크 json url이 안보여서 공유합니다
0
69
1
구글지도 사용에서
0
50
2
todo리스트 강의중에서..
0
68
2
강의가 오래 된거 같은데
1
78
2
const 적용
0
49
1





