Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NMarker 객체에 NOverlayImage.fromWidget 을 이용해 marker를 넣었을때 rendering이 되지않는 이슈 #119

Closed
thkim0118 opened this issue Aug 24, 2023 · 3 comments

Comments

@thkim0118
Copy link

NMarker 객체에 icon 파라미터에 NOverlayImage.fromWidget으로 만든 객체를 주입하고있습니다.

이때 widget은 Svg 이미지 widget 하나와 Text widget을 가지고있는 부모 Widget을 넣어주고 있습니다.

문제는 간헐적으로 Svg 이미지는 그려지지 않고 Text widget만 그려지는 이슈가 있습니다.
png 이미지로 그려보았을때도 이미지는 그려지지 않는 이슈가 발생하였습니다.

이 이슈를 해결하려면 어떤 부분을 보는게 좋을까요??

@SuhwanCha
Copy link

Flutter 문제로 보입니다..
SachinGanesh/screenshot#103
Screenshot 패키지에서 사용하고 있는 방법대로, 약간의 딜레이를 주고, 위 이슈의 방법처럼 여러번 시도해서 2-3번째 이미지를 넣으면 해결 됩니다.

@thkim0118
Copy link
Author

위 방법대로하면 해결이 되긴하네요...
조언 감사합니다 !

@note11g
Copy link
Owner

note11g commented Oct 21, 2023

Svg를 표시하기 위해 사용되는 svg_picture 라이브러리는 내부적으로 svg를 로드할때 다음 코드와 같이 비동기로 로드합니다.

https://github.com/dnfield/vector_graphics/blob/d944f2c0f34395796ca1116d39207eabd76222df/packages/vector_graphics/lib/src/vector_graphics.dart#L386-L419
(if(!cached) -> _loadPicture().then -> setState())

따라서, 위젯의 빌드 타임 내에 로드를 하게 될 경우 캐시에 저장되어 있지 않다면 SVG 벡터 이미지가 뜨지 않을 수 있습니다.
이를 해결하는 방법은 위에 언급하신 것처럼 미리 한번 로드하여 캐시에 저장하도록 하는 것입니다.
미리 한번 로드하면, 캐시에 로드하게 되고, 이는 다음번에 로드할 때, 동기코드만으로 SVG의 로드를 완료시킵니다.

사실 편의를 위해 제공하는 기능이라, 지도 라이브러리에서 이 문제를 해결해야 하는지 여부에 대해 고민이 됩니다.
일단은 해결하지 않는 방향으로 가되, 이후 이 이슈에 대해 라이브러리 레벨의 지원이 필요하다면 따로 WidgetToImage 라이브러리를 분리하는 방안을 검토해보겠습니다. 감사합니다. 즐거운 하루 되세요:)

@note11g note11g closed this as completed Oct 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants