์ด์ ๋ ผ์์์ ๋ช ๊ฐ์ง ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐํ ์์์ ์ธ ์๊ฐ(๋ชจ๋ ๊ฒ์ด ๋ด ๊ฒ์ด ์๋):
๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋๋ฅผ ์ง์ํ๋ ์ฑ ํ๋ ์์ํฌ์์๋ ๋ฒกํฐ ์ง์์ด ์ค์ํด ๋ณด์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ด์ฝ์ด ์๊น๋๋ค.
๋์ :
@HansMuller
Kris๋ ์ด์ ๋ํด์๋ ์ธ๊ธํ์ต๋๋ค. ๋น๋ ์ ์ผ๋ถ ์ ํ๋ SVG ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด SVG ์ค๋ช ์ ๊ธฐ๋ฐ์ผ๋ก MD ์์ด์ฝ ์์ ฏ์ ์์ฑํ ์ ์์ต๋๋ค. ์ ์คํ๊ฒ ์ํํ๋ฉด ๊ณต๊ฐ์ ์ ์ฝํ๊ณ ์๋ ๋์์ธ์ ๋ํ ์ถฉ์ค๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
ํนํ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ์์ด์ฝ์ ๊ฒฝ์ฐ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ์์ด์ฝ ๊ธ๊ผด์ ์ฌ์ฉํ์ฌ ์กฐ์ฌํด์ผ ํฉ๋๋ค.
@appforartists Cocoa๋ android.view๋ ์์ด์ฝ์ ๋ฒกํฐ ํ์์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
@abarth iOS์ ๋ํด ๋๋์ง ์์ต๋๋ค. ํ๋์ฝ๋ฉ๋ 3.5์ธ์น ํ๋ฉด์ผ๋ก ์์ํ์ฌ ๊ทธ ์ดํ๋ก ์ง์๋๋ ํด์๋์ ์ ์ ์ ๋ชจ๋ธ/๋จ์์ฑ์ ์ ์งํ๊ธฐ ์ํด ๊ฝค ์ด์ฌํ ๋ ธ๋ ฅํ ๊ฒ ๊ฐ์ต๋๋ค(์ฐธ์กฐ: ๊ฐ iPhone์ ๋๋น๊ฐ ๋์ผํ๊ฑฐ๋ ์๋ ์์ดํจ๋์ ์์ดํจ๋ ๋ฏธ๋๋ ๊ฐ์ ํด์๋๋ฅผ ๊ฐ์ง) ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์ ๋ํด์๋ ์ ๋ชจ๋ฅด์ง๋ง ์๋๋ก์ด๋๊ฐ ๋ฒกํฐ ๊ธฐ๋ฐ์ด ์๋๋ผ๋ ์ ์ ์ฝ๊ฐ ๋๋์ต๋๋ค.
์ด๋ค ๊ฒฝ์ฐ๋ ์์ด์ฝ์ ์์ ์คํฌ๋ฆฐ์ท๊ณผ ๊ฐ์ด ์จ๋ฆฌ์ด์ฑ๋์ด ๋ณด์ด์ง ์์์ผ ํ๋ฉฐ ๋ฒกํฐ๋ ํด์๋ ๋ ๋ฆฝ์ฑ์ ์ํ ์ข์ ์๋ฃจ์ ์ ๋๋ค. ์์ ์์ด์ฝ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค. : ์ค๋ง์ผ :
์์ ์์ด์ฝ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
์์ด์ฝ์์ ๋ณด๊ณ ์๋ ํด์๋ ๋ฌธ์ ์ ๋ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ ์ถํ์๊ฒ ์ต๋๊น? @krisgiesing ์ ๋ง์ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํด์๋ ์ธ์ ์์ฐ ๋ถ์๊ธฐ๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ฒ๋ฆฌํ์ง ์๋ ๊ฒฝ์ฐ์ ๋ํด ๋ฐฐ์ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
ํ์ฌ ํด์๋ ์ธ์ ์ง์์ ๋ํ ๋ช ๊ฐ์ง ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฏ๋ก ์ง๊ธ์ด ์ ๋๋ก ์๋ํ์ง ์๋์ง ์ดํดํ ์ ์๋ ์ข์ ์๊ฐ์ด ๋ ๊ฒ์ ๋๋ค.
3x์ ๊ธฐ๊ธฐ ํฝ์
๋น์จ์ด 2.6
์ธ ๊ฒ ๊ฐ์ผ๋ฉฐ, ์ด๋ ์๋ง๋ ์์ฐ์ด ์์ ๊ฒ์
๋๋ค.
๋๋ ์ง๊ธ ์ด ํน์ ํ ๊ฒฝ์ฐ๋ฅผ ๋ณด๊ณ ์๋ค. ์ฅ์น ํฝ์ ๋น์จ์ 2.625์ ๋๋ค. ์ฐ๋ฆฌ๋ ์์๋๋ 3.0x ์์ฐ์ ์ ํํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋๋ง ์ค์ ์ผ์ข ์ ์ถ๊ฐ ์จ๋ฆฌ์ด์ฑ ์ํฐํฉํธ๋ฅผ ์ ๋ฐํ๋ ๋ฌด์ธ๊ฐ๊ฐ ์งํ๋๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ @abarth ๊ฐ ๊ธ๊ผด๋ก ์ ํํ์ฌ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ์์ด์ฝ์ ๊ฒฝ์ฐ๋ฅผ ์์ ํ์ง๋ง ํด์๋ ์ข ์์ ํฌ๊ธฐ ์กฐ์ ์ด ํ์ํ ๋ค๋ฅธ ์ ํ์ ์ด๋ฏธ์ง ์์ฐ์ ๋์ ํ์ฌ ์ฌ์ ํ ์กฐ์ฌ ์ค์ ๋๋ค.
๋ฒกํฐ ํ์ ์ง์์ ์ ์ ์ด๋ฏ๋ก ์ด๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ๋ ๋ค๋ฅธ ๋ฒ๊ทธ๋ฅผ ์ด๊ฒ ์ต๋๋ค.
#2337 ์ฐธ์กฐ
Android๋ SVG์ ์ฑ๋ฅ์ด ์ข์ ํ์ ์งํฉ์ธ "VectorDrawable" ํ์์ ์ง์ํฉ๋๋ค. ์ด๋ฏธ ์ปค๋ฎค๋ํฐ ์ง์์ด ์๊ณ Android ํ์์ ์ฑ๋ฅ์ด ์ ์ ํ๋ค๊ณ ํ๋จํ ๊ฒฝ์ฐ ๋์ผํ ํ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
VectorDrawable์ ํ์คํ SVG์ ์ํฅ์ ๋ฐ์ง๋ง ํ์ ์งํฉ์ด ์๋๋๋ค. ๋ํ XML์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ XML์ด ์๊ฐํด๋ผ ์ ์๋ ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข์ ๋ฒกํฐ ํ์์ด ์๋๋ผ๋ ๊ฒ์ ๊ฑฐ์ ๋ณด์ฅํฉ๋๋ค. :-)
VectorDrawable์ ์๊ฒฉํ ํ์ ์งํฉ์ผ๋ก ์ค๋ช ํ๋ ๊ฒ์ ์๋ชป๋์์ง๋ง ์ฌ์ ํ ์ข์ _render_ ์ฑ๋ฅ ๋ณด์ฅ๊ณผ ์ฌ์ฉ ํธ์์ฑ ์ฌ์ด์์ ๊ท ํ ์กํ ์ ์ถฉ์์ผ๋ก ๋ณด์ ๋๋ค. VectorDrawable ์ฌ์์ ๊ฒฝ๋ก ๋ฐ์ดํฐ ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ ์ฃผ์ ์์ญ์ ๋ํ SVG ์ฌ์์ ์์ฃผ ๋ฐ๋ฅด๋ฏ๋ก ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ SVG ์์ฐ์ ํจ์ฌ ์ฝ๊ฒ ๋ณํํ๊ณ ๊ธฐ์กด Android ์ฑ์ ์ด๋ฏธ ํฌํจ๋ VectorDrawable์ ๊ณต์ ํฉ๋๋ค.
XML์ด ๊ตฌ๋ฌธ ๋ถ์์๋ง ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ XML์ด ์๋นํ ์ฑ๋ฅ ๋ฐฉํด ์์๋ผ๊ณ ์์ํ ์ ์์ต๋๋ค. Flutter์ 60fps ์ฑ ๋ชฉํ์ ์ํฅ์ ๋ฏธ์น๋ ์ฑ๋ฅ์ ์ข ๋ฅ์ธ _render_ ์ฑ๋ฅ์ ํ ๋ฒ ์ํํ๊ณ ์บ์ํ ์ ์๋ ๊ตฌ๋ฌธ ๋ถ์ ๋จ๊ณ๊ฐ ์๋๋ผ Skia๊ฐ ๊ทธ๋ ค์ผ ํ๋ ๋ฒกํฐ ์์ ์ธํธ์ ๋ ๋ง์ด ์์กดํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์ ์ ์์ธํ ์ค๋ช ํ๊ณ ์ถ์ง๋ ์์ง๋ง ์ด์ ๋ํ ์์ ์ด ์ด๋ฏธ ์๋ฃ๋์์ผ๋ฏ๋ก "2.0 ๋ฆด๋ฆฌ์ค ์ดํ" ์ด์ ํ์์ ๋ณด๋ฅํ ํ์๊ฐ ์๋ค๋ ๋๋์ ์ง์ธ ์ ์์ต๋๋ค.
๋จธํฐ๋ฆฌ์ผ ๋์์ธ ์์ด์ฝ์ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๊ธ๊ผด์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ์ง์ dart:ui
ํธ์ถ์ด๋ CustomPaint ์์ ฏ์ ์ฌ์ฉํ์ฌ ์ค๋ Flutter ์์ ์ด๊ฒ์ ๊ตฌ์ถํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋๋ ์ฅ์ ๋ฌผ์ ๋ํด ์์ง ๋ชปํฉ๋๋ค: https://docs.flutter.io/flutter/widgets/CustomPaint-class. HTML. ํ์ฌ๋ก์๋ ๊ทธ๋ฌํ ๊ตฌ์ถ์ ๋ํ ์ฆ๊ฐ์ ์ธ ๊ณํ์ด ์์ต๋๋ค.
$.02 - ๋ฒ๋ฒ
๊ฑฐ๋ฆผ์ด ์๋ ๋ธ๋ผ์ฐ์ ( ๋ฐ ๊ฒฝ์์ ํ๋ ์์ํฌ์ธ React Native ๋ ์ ๊ฒฝ์ฐ์ง ์์ต๋๋ค. ์๋ฃจ์
์ด ํดํน๋จ)๋ SVG๋ฅผ ๋ ๋๋งํ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง ๋ด๋ณด๋ด๊ธฐ ์ต์
์ ์ฌ์ฉํ๋ ค๋ฉด ํ์ ๊ฐ ์์ด์ฝ ๋๋ ์ํธ ์์ฐ์ ๋ํด ์ต์ 3๊ฐ์ ํ์ผ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํ๋์ SVG ํ์ผ์ด ๋ชจ๋ ํด์๋์์ ํ์๋ ์ ์๋ ๊ฒ๊ณผ ๋น๊ตํ๋ฉด ์ด๋ ์ข์ง ์์ ๋ฐฉ๋ฒ์
๋๋ค.
Hixie์ ์ ์๊ฒฌ์ ๋ํด ๊ธฐ์กด ๊ธฐ๋๊ฐ ๊ฐ์น ์๋ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ฐฉํดํด์๋ ์ ๋ฉ๋๋ค. ๋๋ SVG ๋์คํ๋ ์ด์ ๋ํ ๊ธฐ๋ณธ ์ง์(์ ์ ์ ํ์ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ)์ ํจ์ฌ ๋ ์ข์ํ๊ณ ๊ณ์ ์ฆ๊ฐํ๋ PNG๋ฅผ ์์ฉํ๊ธฐ ์ํด ๊ณ์ ์ฆ๊ฐํ๋ ์์ PNG์ ์์กดํ๋ ๊ฒ๋ณด๋ค ํ์ฅ ์ต์ ์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์ถ์ต๋๋ค. ํ๋ฉด ํด์๋์ ์.
ํ์ ์ํด ๊ธ๊ผด์ ๋ง๋๋ ๊ฒ์ผ๋ก ๋์๊ฐ๊ณ ์์ง๋ง ๊ธ๊ผด ํ์์ด ์ฑ์์ ์กฐ์ ํด์ผ ํ๋ ์ค ๋์ด ๋ฐ ๋ฌธ์ ๊ฐ๊ฒฉ์ ๋ํ ์ถ๊ฐ ํ์์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ SVG ์ง์๋งํผ ์ข์ง ์์ต๋๋ค. ๋ํ ๊ธ๊ผด์ ๊ณ ์ ๋ ํด์๋(12px, 16px, 20px, 36px...)๋ก ํ์๋๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ์ ํ์ ์ ๋๋ค.
๋ฉ์ง Flutter ํ๋ ์์ํฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. :)
SVG ์ง์์ ์ํ๋ ๋ชจ๋ ์ฌ๋์ด SVG ์ง์์ Flutter์ฉ Dart ํจํค์ง๋ก ๊ตฌํํ๋๋ก ๊ถ์ฅํฉ๋๋ค.
๊ด์ฌ ์๋ ๋ถ๋ค์ ์ํด ๋๋ก์์ ์ํ ์ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ https://docs.flutter.io/flutter/dart-ui/dart-ui-library.html ์ ๊ฐ๋ฆฌํต๋๋ค.
ํ์์: Dart ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ฃจ์ ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ทธ๋ฅ ๋๊ฒจ.
๊ทธ๊ฒ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? Flutter์ ์ ์ฒด ํ๋ ์์ํฌ๋ Dart ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฌ๊ธฐ์ ๊ตฌํํ๋ ๋ชจ๋ ๊ฒ์ Dart ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ๊ฒ์ ๋๋ค. "์ถฉ๋ถํ ์ข์" ์กฐ๊ฑด์ ๋ฌด์์ ๋๊น?
์๋ฅผ ๋ค์ด ์ผ๋ง ์ ์ ์์ Dart์์ (๋จ์ํ๊ณ ํฌ๊ด์ ์ด์ง ์์) SVG ํ์๋ฅผ ๊ตฌํํ์ต๋๋ค.
https://github.com/matanlurey/svg
๋ค์ ์ค ํ๋๋ ๋ค์ ์ฌ์ํ ๊ฒ์ผ ์ ์์ต๋๋ค.
ใ
. dart:ui
๋ด๋ถ์์ ์ฌ์ฉํ๋ ๋ฐํ์ SVG -> SvgRenderElement
๋ฅผ ๋ง๋ญ๋๋ค.
๋น. SVG๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณํํ๋ ๋น๋ ํ์ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ๋ง๋ญ๋๋ค.
// compiled from star.svg
void drawStarSvg(canvas, width, height) { ... }
@deborah-ufw ๊ด์ฌ์ด ์์ผ์๋ฉด ์ฑํ ์ ํตํด ์์ธํ ์์๋ณด์ธ์. ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์๊ฒ ์ด์?
์๋ ํ์ธ์ Seth, matanlurey ๋ฐ Hixie - ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ ๋ ์๋ง๋ Dart ํ๋ฌ๊ทธ์ธ ์๋ฃจ์ ์ ๊ฑฐ๋ถํ ๊ฒ์ด ์ฐ๋ฆฌ์ ์์ ์์ง๋์ด์๊ธฐ ๋๋ฌธ์ ๊น์ด ์ด์ผ๊ธฐํ ์ ์ ํ ์ฌ๋์ด ์๋ ๊ฒ์ ๋๋ค.
๋๋ ์ด Github ๋ฌธ์ ์ ๋ํ ๋งํฌ๋ฅผ ๊ทธ๋ค์๊ฒ ์ ๋ฌํ๊ณ ๊ทธ๋ค์ ์ฝ๋ฉํธ์ ๋ํ ๊ธฐ์ ์ ์ธ ์ด์ ๋ฅผ ์ ๊ณตํ๋๋ก ์์ฒญํ๊ณ ์ถ์ต๋๋ค.
๋ํ http://gitter.im/flutter/flutter ๋ฐ ํ์ํ ๊ฒฝ์ฐ https://flutter.io/support/์ ๋์ด๋ ๊ธฐํ ์ฐ๋ฝ ๋ฐฉ๋ฒ์ ํตํด ์์ง๋์ด์ ์ง์ ์ฑํ ํ ์ ์์ต๋๋ค. :)
์ถ๊ฐํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! :๋
๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ http://svgpp.org/ ์ ๊ฐ์ ๊ฒ์ ๊ธฐ๋ณธ ์์ค์์ ํตํฉํ๊ณ Flutter ํ๋ฌ๊ทธ์ธ ์์คํ ์ ์ฌ์ฉํ์ฌ ํต์ ํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์๋ง๋ ์์ ํ SVG ์ง์์ ์ํ ์ต์์ ํฌ๊ธฐ/์ฑ๋ฅ ํน์ฑ์ ์ ๊ณตํ ๊ฒ์ด์ง๋ง ์ข ์์ฑ์ ์ ์งํ๋ ๋น์ฉ์ ํฌ์ํด์ผ ํฉ๋๋ค.
์์ง ์์ค์์ SVG ์ง์์ ์ฐพ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ๋๋ ํ์ค์ ์์ ํ ์ง์์ ๊ธฐ๋ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๊ฑฐ๋ ๋ฐ๋์งํ์ง ์๋ค๊ณ ์๊ฐํ์ง๋ง ํธ์์ ์ผ๋ถ๋ ๊ต์ฐจ ๊ธฐ๋ฅ ํ๊ณผ ๊ธฐ์กด ๋๊ตฌ์ ๋ํ ์ง์์ ๋๋ค.
Skia๊ฐ ๊ธฐ๋ณธ์ ์ธ SVG ์ง์์ ์ ๊ณตํ๋ค๋ ์ธ์์ ๋ฐ์์ต๋๋ค. ์ด๊ฒ์ Flutter์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์๋์?
๋ด๊ฐ ๋งํ ์ ์๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด, ๊ทธ๊ฒ์ ๋จ์ง ์คํ์ ์ด๊ณ ๋ถ๋ถ์ ์ด์์ต๋๋ค. https://bugs.chromium.org/p/skia/issues/detail?id=5596 ๋นํธ ์ฌ๊ธฐ์ ์ด๋ฆฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. 1๋ ์ด ๋์์ต๋๋ค. ๊ทธ๋ค์ ๋ํ ๋ก๋๋งต์ ๋์ดํ๊ณ ์์ง๋ง ์ฐ์ ์์๊ฐ ๋ฌด์์ธ์ง ๋ค์ ๋ช ํํ์ง ์์ต๋๋ค.
SVG ์ง์์ ํต์ฌ ๋ถ๋ถ์ธ SVG ๋ฌธ์ ๋ชจ๋ธ์ ๋ ธ์ถํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ง ์์ค์์ SVG๋ฅผ ์ง์ํ๋ ๊ฒ์ ์ด์น์ ๋ง์ง ์์ต๋๋ค.
Flutter๊ฐ SVG๋ฅผ ์ง์ํ๋ค๋ฉด, ์ค์ SVG๋ฅผ ์ค์ ๋ก ์ค์ ๋ก ์ง์ํ๋ ๊ฒ์ด ๊ถ๊ทน์ ์ธ ๋ชฉํ๊ฐ ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ฅ์ ๋ฌด์ฌ์ฝ ๊ตฌํํ๋ ๊ฒ์ Flutter์ ์ฒ ํ์ ์ด๊ธ๋ฉ๋๋ค.
SVG ๋ฌธ์ ๋ชจ๋ธ์ SVG ์ง์์ ํต์ฌ ๋ถ๋ถ์ผ๋ก ๋ ธ์ถํ๋ ๊ฒ์ ๋ณด์ด์ง ์์ต๋๋ค. ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง ๋ด๊ฐ ์ผ๋์ ๋๊ณ ์๋ ์ฌ์ฉ ์ฌ๋ก์ ๊ผญ ํ์ํ ๊ฒ์ ์๋๋๋ค.
์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ค ์ง์์ ํตํด ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ์์ง ์์ฒด๊ฐ SVG ๋ฐ์ดํฐ(์ค์ํ ํ์ ์งํฉ)๋ฅผ ๋ ๋๋งํ ์ ์๋ ๊ฒฝ์ฐ SVG ํ์ ์งํฉ์ ์ํด ์ ์๋ ๋ฒกํฐ ์ด๋ฏธ์ง ์์ฐ์ ๋ ๋๋งํ๊ธฐ์ ์ถฉ๋ถํ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ถ๋ช ํ ๊ทธ๊ฒ๋ณด๋ค ๋ ํฝ๋๋ค. ํ์ง๋ง ๊ธฐ์กด SVG ์์ฐ์ ๊ฐ์ ธ์์ ๋ชจ๋ ๋ถํผ๊ฐ ํฐ ๋์คํฐ ์ด๋ฏธ์ง๋ก ๋ณํํ์ง ์๊ณ ๋ค๋ฅธ ํด์๋์์ ์ ์ ํ๊ฒ ๋ ๋๋งํ ์ ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์, SVG ์์ฐ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ๋ ์ ๋ง ์ข์ง๋ง SVG ์ฌ์์ 800ํ์ด์ง๊ฐ ๋์ต๋๋ค. Skia(๋ฒกํฐ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์์ ๋ ๋๋งํ๊ธฐ ์ํด ์ ์ ํ์ผ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ ๋ณต์ฉํ๊ณ ์์ต๋๋ค. ํญ์ ๊ทธ๋ ๋ฏ์ด ์ฃผ๋ง์๋ง ์๋ฅด๋ฐ์ดํธ๋ฅผ ํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋ก ๋ณผ ์ ์์ต๋๋ค. ๋ํ ์๋ง์ SVG ํ์ผ์ด ์์ง๋ง ๋ชจ๋ ๋์ผํ ํญ๋ชฉ(flaticon์ ์์ด์ฝ ๋ชจ์)์ ์ฌ์ฉํ๋ฏ๋ก ์ด ๊ธฐ๋ฅ์ ์ํ๋ ์ฌ๋๋ค์ ์ํ SVG ํ์ผ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์นด๋ฅผ๋ก์ค.
์ ๋ ์๊ฐ์ด ์ง๋๋ฉด์ ์ด๊ฒ์ ๋ํด ์กฐ๊ธ ๊ณ ๋ฏผํ์ต๋๋ค. ์ ๊ฐ ์๊ฐํด๋ธ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋งค๋ ฅ์ ์ผ๋ก ๋ณด์ ๋๋ค.
image: new AssetImage('graphics/background.svg')
์ ๊ฐ์ ๊ฒ์ ์ง์ํ์ฌ ์ผ๋ถ C/C++ ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ SVG ๋ฐ์ดํฐ๋ฅผ Skia ๋ ๋๋ง ๋ช
๋ น์ผ๋ก ๋ณํํฉ๋๋ค.๊ทธ๋ฌ๋ ์ต์ํ ๋ช ๊ฐ์ง ์ด๋ ค์์ด ์์ต๋๋ค.
dart:ui
๋ SVG๊ฐ ์ด๋ฏธ ํ์๋ก ํ๋ Skia์ ๋ง์ ๊ธฐ๋ณธ ์์๋ฅผ ์ ๊ณตํฉ๋๋ค.๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ์ด๋ ค์์ด ์์ต๋๋ค.
์ํ SVG์ ๊ดํ ํ 1.1 ํ
์คํธ ์ค์ํธ์์ ์ง์๋๋ SVG(๋๋ ๋ถ๋ถ์ ์ผ๋ก ์ง์๋๋ ๊ฒฝ์ฐ ๋ถ๋ถ์ ์ผ๋ก ์ง์๋๋ SVG)๋ฅผ ์๋ณํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ์ฉํ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ๋ค์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค:
https://github.com/w3c/web-platform-tests/tree/master/svg/import
๋๋ ์ฌ๊ธฐ์์ ์ผ๋ถ PNG ๋น๊ต: https://www.w3.org/Graphics/SVG/Test/20110816/
@cbazza , ์ด๊ฒ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ์ด ์์ ์์ ์ ๋ Dart ํจํค์ง ์์ค ๊ตฌํ์ ๋ ๊ธฐ์ธ๊ณ ์์ต๋๋ค.
๋ํ ์์ด์ฝ ์ ํ ์ง์์ IconData์ ๊ฐ์ ๊ฒ์ผ๋ก ์ฝ๊ฒ ์ฒ๋ฆฌ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฝ๋ ํฌ์ธํธ๋น ๋จ์ผ ๊ฒฝ๋ก๋ง ์ง์ํด์ผ ํ๋ฏ๋ก ๋ณ๋๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
dart:ui ์์ 'Dart ๋ ๋ฒจ ๊ตฌํ'์ ์๊ฐํ๊ณ ์์ต๋๋ค.
2๊ฐ์ง ๊ธฐ๋ณธ ์ฌ์ฉ ์ฌ๋ก:
(1) ๋ค์๊ณผ ๊ฐ์ ์ ์ ์์ด์ฝ svg ํ์ผ์ ๋ก๋ํฉ๋๋ค.
"์ด๋ฏธ์ง: new AssetImage('graphics/background.svg')", ์ฌ๊ธฐ์
ํ์ผ์ ํ์ผ ์์คํ
์์ ๋๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฌ ์ ์์ต๋๋ค.
๋์ ์ผ๋ก.
(2) DSX๋ฅผ ํตํ ์์ ฏ ๊ธฐ๋ฐ svg ์ง์(JSX ์ ์ฌ ๊ตฌ์ฑ)
๋ค์๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
https://github.com/react-native-community/react-native-svg
'ํ
์คํธ ๋ฐ์ดํฐ'์ ๊ด๋ จํ์ฌ ํ์ํ ์ฌ๋๋ค์ ์ค์ ํ์ผ์ด ํ์ํฉ๋๋ค.
์ด๊ฒ์ w3 ํ
์คํธ ์ค์ํธ๊ฐ ์๋๋๋ค. SVG ์ง์์ ์ข
์์ ์
๋๋ค.
dart:ui ๊ฐ ์ง์ํ๋ ํญ๋ชฉ์ ๋ฐ๋ผ ์ํ๋ svg ํ์ผ์ ๋ค์์ด ํฌํจ๋์ด ์์ผ๋ฉด
dart:ui ๋ก ํ ์ ์๋ ์ผ, ๋๋ ํ ์ ์์ ๊ฒ์
๋๋ค
๋นจ๋ฆฌ ์์๋ณด์ญ์์ค.
์นด๋ฅผ๋ก์ค.
๋ฐ์ํ ๊ธฐ๋ณธ SVG ๋ชจ๋ธ๋ก ๊ฐ์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ค์ ์ฌ๋ก๋ฅผ ์ง์ํ๊ณ ์ถ์ต๋๋ค. ์ฝ๊ฐ w3 ์ ํ๊ตฐ์ ๋ค๋ฃจ๋ ๊ฒ์ด ์๋ํ๋ ๊ฒ๊ณผ ์๋ํ์ง ์๋ ๊ฒ, ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ด์ง์ ๋ํ ๋ ๋์ ๊ธฐ์ค์ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค)
๋ง์์ ๋ญ๊ฐ ์คํด๊ฐ ์๋๋ฏ...
(1)์ ์ํํ ๋ ํ์ค SVG ํ์ผ์ ์ฌ์ฉํ๊ณ dart:ui (Skia)๋ฅผ ์ ๊ณตํ ์ ์๋ ํ ์ต๋ํ ์ง์ํ๋ ค๊ณ ๋
ธ๋ ฅํ ๊ฒ์
๋๋ค.
SVG์ ๊ฐ์ ๊ตฌ์ฑ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์์ ฏ์ ์์ฑํ๋ (2)๋ฅผ ์ํํ๋ฉด ํด๋น react-native-svg ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งค์ฐ ์ ์ฌํ๊ฒ ๋ณด์ผ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋ค๋ฅธ 2๊ฐ์ง์
๋๋ค.
@cbazza ์ฑ์ svgs ์ฌ์ฉ ์ฌ๋ก๋ ์ฃผ๋ก ์์ด์ฝ์ผ๋ก ์ฌ์ฉํ๋ ๋จ์ svgs์ ๋ํ ๊ฒ์ ๋๋ค. ๋ค์์ ๋ํ์ ์ธ ์ต๊ทผ svgs๋ฅผ ์ ํํ์ฌ Dropbox์ ์๋ zip ํ์ผ์ ๋ํ ๋งํฌ์ ๋๋ค. https://www.dropbox.com/s/dp38wxc22625cvc/icons.zip?dl=0
์ฌ๊ธฐ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. SVG Flutter ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋๋ ๊ฒ์ ๋ณด๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค!
๋๋ ๋ค์ SVG ํ์ผ ์ํ์ค์ ์ผ๋ถ ์ต์ํ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ํํ๊ณ ๋์ค์ ์์ด์ฝ ์ ๋๋ฉ์ด์ ์ ํ์ํ๋ ๋ฐ ์ฌ์ฉํ๋ Dart ํ์ผ์ ๋คํํ๋ ๋๊ตฌ๋ฅผ ์์ฑํ์ต๋๋ค. vitool .
์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ AnimatedIcons ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ผ๋ฉฐ ์๋ ํ
์คํธ ์ฑ ( cd dev/manual_tests; flutter run -t lib/animated_icons.dart
)์ ์คํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ต์ ์ด๊ฑฐ๋ ์์ ํ์ง๋ ์์ง๋ง ํ์ฌ ๊ฐ์ง๊ณ ์๋ ์ ๋๋ฉ์ด์ ์์ด์ฝ ์ธํธ์์ ์๋ํ๋ฉฐ ๋๊ตฐ๊ฐ๋ ์ด๋ฅผ ๋ถ๊ธฐ/ํ์ฅํ ๊ถํ์ด ์๋ค๊ณ ๋๊ปด์ผ ํฉ๋๋ค.
์ด ๋จ์ ์์ด์ฝ์ ๋ํด @deborah-ufw ํ ์ ์๋ ์ผ์ ์์ด์ฝ ๊ธ๊ผด์ ๋ง๋ค๊ณ ์์ด์ฝ ์์ ฏ ์ ์ฌ์ฉํ์ฌ ์์ด์ฝ์ ํ์ํ๋ ๊ฒ์ ๋๋ค.
@amirh ๋ ์์ ๋ฒกํฐ ๊ธ๊ผด์ ๋ง๋ค๊ธฐ๊ฐ ์ฝ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@amirh ์์ ์ ์ฒด ์ค๋ ๋๋ฅผ ์ฝ์ ๊ฒฝ์ฐ ๊ธ๋ฆฌํ๋ฅผ ์์ด์ฝ์ผ๋ก ์ฌ์ฉํ์ฌ ๊ธ๊ผด์ ๋ง๋ค๊ณ ์ ์ํ๋ ๊ฒ์ SVG๊ฐ ์ง์๋์ง ์๊ธฐ ๋๋ฌธ์ ์ํํด์ผ ํ๋ ์ถ๊ฐ ๋จ๊ณ์ ๋๋ค. SVG ์ง์์ ๊ธ๊ผด๋ณด๋ค ํจ์ฌ ํจ์จ์ ์ ๋๋ค. ๋ํ zoechi๊ฐ ๋ง์ต๋๋ค. ์ฌ๋ฌ ์์์ด ์๋ ๋ฒกํฐ ์ํธ๋ ๊ธ๊ผด๋ก ๋ง๋๋ ๊ฒ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. ์ํ ์์ด์ฝ์ ๋ณด๊ณ ๋จ์ ์์ด์ฝ๋ง ํ์ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
@deborah-ufw, ํ์ผ์ ๋ํด ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ ํํ ์ ๊ฐ ์ฐพ๋ ๊ฒ์ด์๊ณ ์ด๋ฏธ ์ ํ์ผ์ ์๋ ๊ฒ์ ์ฐพ์์ต๋๋ค.
@amirh , ๋ค, ๋น์ ์ ํ๋ฅญํ ์ํ์ ์ด๋ฏธ ๋ณด์์ต๋๋ค ;)
svg ๋๋ vector asset xml์ flutter์ฉ ์ด๋ฏธ์ง์ ์์ค๋ก ๋ฃ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ง์นจ๋ด ์๊ฒผ์ต๋๊น?
@Hixie : ๋ค์ค ํ๋ซํผ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ํ์ ๊ฒฝ์ฐ ์ด๊ฒ์ด ์ง์ ํ ๊ณ ์ถฉ์ด์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ถ๋ถ์ ์ด๊ณ ๋น๊ต์ ๊ฐ๋จํ SVG ์ง์ ๋ง ํ์ํ๋ค๋ ์ ์ (์ฌ)๊ณ ๋ คํ์ญ์์ค. SVG ํ์ค ์ ์ง ๊ด๋ฆฌ์์๊ฒ ์ด๊ฒ์ ๋ฌด๋ชจํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์์ง๋ง Flutter๋ ์ผ๋ฐ ํ์ค ์์ฑ์๊ฐ ์๋ ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค. Flutter๊ฐ ์ค์ ์ ์ธ ๊ณ ํต์ ๋์ด์ค๋ค๋ฉด ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์์ ๋ง์์ ์ฌ๋ก์ก์ ๊ฒ์ ๋๋ค.
๋ํ ์ด๋ฌํ ์ค๋ ์๊ตฌ์๋ ๋ถ๊ตฌํ๊ณ ์ปค๋ฎค๋ํฐ ์ง์ ์ ๊ทผ ๋ฐฉ์์ Flutter ๊ฒฝ์์ Xamarin ์์ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์์ฑํ์ง ๋ชปํ๋ค๋ ์ ์ ๊ณ ๋ คํ์ญ์์ค(Xamarin ๊ฒฝํ 5๋ ์์ - ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์์ธ ๋๊ตฌ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ณ , ๋๋ฌด ์ ํ์ ์ด๋ฉฐ, ์์ ์ ์ด์ง ์์ผ๋ฉฐ, ์ ๋ฃ ๋ฐ/๋๋ ๋น๊ณต๊ฐ ์์ค).
์ด ๋๋ฌธ์ Xamarin ์ปค๋ฎค๋ํฐ๊ฐ ์คํจํ ๊ณณ์์ Flutter ์ปค๋ฎค๋ํฐ๊ฐ ์ฑ๊ณตํ ๊ฒ์ด๋ผ๊ณ ๋๊ดํ์ง ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ค์ฉ์ ์ด๋ผ๊ณ ์ถ์ ํ๋ค. SVG ์์ด์ฝ์ ๋ํ ๋ถ๋ถ ์ง์์ Flutter ํ์ด ๊ธฐ์กด Skia ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ณตํ ์ ์๋ ๊ฒ์ ๋๋ค.
์ด๋ Flutter์ ๋ชฉํ์ ์ ๋ถํฉํฉ๋๋ค . ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ก์ ์ธ ์๊ฐ ๋ด์ ์๋ฆ๋ต๊ณ ๊ณ ์ฑ๋ฅ์ UX๋ฅผ ์ ๊ณตํ ์ ์๋๋ก ํฉ๋๋ค. ๊ทธ๊ฒ์ ์์ฐ์ฑ, ์ถฉ์ค๋ ๋ฐ ์ฑ๋ฅ์ ํฅ์์ํฌ ๊ฒ์ ๋๋ค(SVG๋ ๋ชจ๋ PNG๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ๋ก๋๋ฉ๋๋ค.
ํต์ฌ ์๊ตฌ ์ฌํญ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํฌ๋ฆฌ์์ดํฐ๋ธ ๋์์ด๋ ๋๊ตฌ(์: Adobe)์์ ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ๋ณธ ์ฑ ์์ด์ฝ์ ์ด๋ฅด๊ธฐ๊น์ง ์์ฐ์ ์ธ ์ํฌํ๋ก์ ๋๋ค.
ํ์ฌ PNG ์ ๊ทผ ๋ฐฉ์์ ์์ฐ์ฑ๊ณผ ์ฑ ํฌ๊ธฐ ์ธก๋ฉด์์ ๋งค์ฐ ๋ญ๋น์ ์
๋๋ค. ๋ชจ๋ ์์ด์ฝ์ ์ต๋ 9๊ฐ์ ๊ณ ์ ๋นํธ๋งต(Android 6๊ฐ, iOS 3๊ฐ)์ผ๋ก ์์ฑํ๊ณ ์ ๊ณตํ ๋ค์ ๋ฐํ์์ ํ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ฌด ์์์ ์
๋๋ค. ๋ฌธ์ ๋ ํด์๋์ ํฌ๊ธฐ์ ๋ณํ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊พธ์คํ ์ฆ๊ฐํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์พํ ํ์ ์ ์ด๊ณ ์์ฐ์ ์ธ Flutter ๊ฐ๋ฐ์ ๊ฒฝํ์์ ์ํ ์์ง์๊ฐ๋ฝ์ผ๋ก ํ์ด๋์ต๋๋ค. Flutter๋ ์ฌ๊ธฐ์์ ๊ฐ๋ฐ์์ ๋ง์๊ณผ ๋ง์์ ์ป์ ์ ์๋ ์ง์ ํ ๊ธฐํ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ํ @dnfield ์์์ ์ธ๊ธํ Flutter์์ ๊ตฌํํ๊ธฐ ์ํ ์ฅ์ ๋ฌผ๋ก ์ธ๊ธ๋ SVG ๊ธฐ๋ฅ ์ ์ ๊ฒฝํ์ ๊ด๋ จ์ด ์๊ฑฐ๋ ํด๋น ๋์์ธ ์์ฐ์ ๋ํด PNG๋ก ๋ค์ ๋์๊ฐ๋ ๊ฒ์ด ์ฝ๊ฐ ๋ถํธํ ์ ๋๋ก ๋๋ฌธ ๊ฒ์
๋๋ค.
Don't care: CSS, HTML, SMIL, ๋ฌธ์ ๋ชจ๋ธ, ์คํฌ๋ฆฝํ
์ ๋๋ฉ์ด์
, ํ
์คํธ: ์ด๋ฅผ ์ํด ๋ค๋ฅธ ๊ธฐ์ ๋ก ๋์ฒดํ ๋งํผ ํฌ๊ทํฉ๋๋ค.
์ด ์ค๋ช ์ ๊ธธ์ด๊ฐ ์๋ฃจ์ ์ ๊ฐ์น๋ฅผ ์ ๋ฌํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ!
@VincentH-Net ๋๋ ์ํ์ 100% ๋๊ฐ!!! SVG ํ์ผ ์ค ์ผ๋ถ๋ฅผ ์ ์๊ฒ ๋ณด๋ด์ฃผ์ญ์์ค. ์๋ง๋ Xamarin์ SVG ์ง์์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฒกํฐ ๊ทธ๋ํฝ ์์ง์ ๋ถ์กฑ์ผ๋ก ์ธํด SVG ์ง์์ ์ ๊ณตํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ Flutter with Skia์ ๊ฒฝ์ฐ๊ฐ ์๋๋ฏ๋ก ์ปค๋ฎค๋ํฐ ์๋ฃจ์ ์ด ์ผ์ด๋ ๊ฒ์ด๋ผ๊ณ ๋งค์ฐ ๋๊ดํฉ๋๋ค.
FWIW, Xamarin์๋ SkiaSharp์์ ์ฌ์ฉํ ์ ์๋ Skia๋ ์์ต๋๋ค. SVG๋ ์ต์ํ์ ๊ตฌํ์๋ ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค.
ํ์ง๋ง @cbazza ์ด ๋ฌธ์ ์ ๋ํด ๊ทํ์ ํ๋ ฅํ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋๋ฉ์ด์ ์ธก๋ฉด์์ Lottie๋ฅผ ํ์ฑํํ๋ฉด ๋ง์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถฉ์กฑํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@dnfield ์ด Lottie ์ ๋๋ฉ์ด์ ์ Flutter ์์ ฏ์ผ๋ก ์ฝ๊ฒ ๋ค์ ๋น๋ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@dnfield , ์์ ฏ์์ ์์ ์์ค ์์
์ ์ํํ๋ ๋์ ์์ง ์์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฒ๋ฆฌํ๋ ํ์ ์์ค ์ฌ๋์ด ๋ ์ ์์ต๋๋ค(๋น๋๊ธฐ svg ๊ตฌ๋ฌธ ๋ถ์, ์บ์๋์ด ๋ ๋๋ง ์
๋ฐ์ดํธ ์ ์บ๋ฒ์ค๋ก ๋ณด๋ผ ์ ์๋ '๊ทธ๋ฆผ' ๊ตฌ์ฑ ๋ฑ).
๋ค, Lottie ์์
์ ๋์์ด๋/๊ฐ๋ฐ์ ์ํฌํ๋ก์ ๋งค์ฐ ์ข์ต๋๋ค.
@zoechi ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ์๋ํ๋ Lottie ์์ ฏ์ ๊ฐ๋จํ ๊ฐ์ ธ์ฌ ์ ์๋๋ฐ ์์ ฏ์ ์ฌ์ฉํ์ฌ ์์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๋ค์ ๋น๋ํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์์ ๋ด ์ด์ ๋ชฉํ(2)๊ฐ ์์ ฏ ์ ๋๋ฉ์ด์
๊ณผ ํจ๊ป ์ ์๋ํ ๊ฒ์ด๋ผ๊ณ ๋งํ์ง๋ง(๋ฐ๋ผ์ ๋๋ ํ๊ณ ์ถ์ ์ด์ ).
@zoechi - ๋ชฉํ๋ ๋์์ด๋๊ฐ ๊ฐ๋ฐ์ ์ ์ฅ์์ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ด๋ฌํ ๊ฒ์ ๋ง๋ค๊ณ ๋ ๋๋งํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋ ๋ฒ์งธ ๋ชฉํ๋ ์ฌ์ ์ปดํ์ผ์ ํ์๋ก ํ์ง ์๊ณ ๋ฐํ์ ์ ๋ฆฌ์์ค๋ก ๋ก๋ํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
SVG์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์, ๊ฐ๋ฐ์๋ ํ์คํ SVG ๋ฒกํฐ ๋ฐ์ดํฐ๋ฅผ Dart๋ก ๋ณํํ ์ ์์ง๋ง ์ด์์ ์ผ๋ก๋ ๋ฒกํฐ ๋๋ก์(SVG ์ฌ๋ถ) ๋ฆฌ์์ค๋ฅผ ํฌํจํ๊ณ ๋ฐํ์์ ๋ ๋๋งํ ์ ์์ต๋๋ค.
๋ค์ ๋งํด์, ์ ๋ ๋์์ด๋์๊ฒ ๋ฒกํฐ ์์ฐ์ ํ ๋ฒ ์์ฑํ๊ณ ์ต์ํ์ ์์ ์ผ๋ก Flutter ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค(๋์์ด๋๊ฐ ์ด๋ฅผ ๋ค์ํ ๋์คํฐ ํ์์ผ๋ก 5๋ฒ ๋ด๋ณด๋ด์ง ์๊ณ ๋ Apple ๋๋ Samsung์ด ๋ค์ ์ ํ๋ฅผ ์ถ์ํ๋ ์ฆ์ ๋ฌดํจํ๋จ).
๋ค์ํ ๋์คํฐ ํ์
์, ์ง๋ 10๋ ์ฒ๋ผ ๋๊ปด์ง๋๋ค.
https://github.com/luberda-molinet/FFImageLoading ์ดํด๋ณผ ๊ฐ์น๊ฐ ์์ ์ ์์ผ๋ฉฐ Skia๋ฅผ ์ฌ์ฉํ์ฌ Xamarin์ฉ SVG๋ฅผ ๋ ๋๋งํฉ๋๋ค.
@escamoteur
๊ฐ์ฌํฉ๋๋ค. ์ ๋ง ์ข์ ๋ณด์ ๋๋ค. ๋น๋๊ธฐ๊ฐ ์๋๋ผ๋ ์ ๋ง ๋นผ๋ฉด ๋ฉ๋๋ค. ;)
์ต๊ทผ์ Android ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฒกํฐ ๋๋ก์ด๋ธ๋ง ์ฌ์ฉํ๊ณ ์๋๋ฐ ๋์ ๋๋ ์ฑ๋ฅ ์ ํ๊ฐ ๋ณด์ด์ง ์์ต๋๋ค. ์์ด์ฝ์ด ์ ๋ช
ํ๊ณ ์ฑ ํฌ๊ธฐ๊ฐ ํจ์ฌ ์์ต๋๋ค. ๋ํ ๋ค์ํ ์ด๋ฏธ์ง๋ฅผ ํ
์คํธํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ๊ณ ๋น ๋ฆ
๋๋ค. ์ด @2 , @3 , @4 , @5 ,.... ์๋ฃจ์
์ Flutter์ ๊ฐ์ ํ๋์ ์ธ ํ๋ ์์ํฌ์์ ํ ๊ฑธ์ ๋ฌผ๋ฌ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
๋๋ ์ ๋น์ ์ด ์๋๋ก์ด๋ ๋ฒกํฐ ๋๋ก์ด๋ธ์ ๋ด๋นํ๋ ํ์ ๊ฐ ์ ์๊ณ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ทธ๋ค์ ์์ด๋์ด๋ ๊ตฌํ(๊ฐ๋ฅํ ๊ฒฝ์ฐ)์ ์ฌ์ฉํ ์ ์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค.
๋๋ ์ฌ๊ธฐ ์บ๋ฒ์ค์ ๊ทธ๋ ค์ง ์ผ๋ถ SVG๋ฅผ ๊ฐ์ง๊ณ ๋์์ต๋๋ค. path
์์๋ ๊ตฌํํ๊ธฐ ๊ฐ์ฅ ๊น๋ค๋กญ์ง๋ง ๋
ธ์ถ๋๋ฉด ์ ๋ง ๋์์ด ๋๋ Skia API๊ฐ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์์ง์ ๋
ธ์ถ์ํค๋ ์คํ์ ํ๊ณ , ์ข ๋ ๋ค๋ฌ์ ์๊ฐ์ด ์๊ธฐ๋ฉด PR์ ์ด ๊ฒ์
๋๋ค.
๋๋ต์ ์ธ ์์ด๋์ด๋ ์ด๋ฏธ ์กด์ฌํ๋ Skia API๋ฅผ ์ฌ์ฉํ์ฌ SVG ๋ฐ์ดํฐ ๋ฌธ์์ด์์ dart:ui
Path
๋ฅผ ์์ฑํ ์ ์๋๋ก ํ๋ ๊ฒ์
๋๋ค. ์ ์๋ ๋ฐฉ๋ฒ์ static Path Path.parseFromSvgData(String svgData) -> Path
์
๋๋ค.
์ ์ฉํ ์ ์๋ ๋ค์ํ ๋ณํ/ํ/์ฑ์ฐ๊ธฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ์ฝ๊ฐ์ ์์ ์ด ๋จ์ ์์ต๋๋ค. @amirh ๊ฐ ํ ์์ ์์ ์๋นํ ์์ ๊ฒ์ ๋น๋ฆด ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค(SkParsePath์๋ ์๋ ์ ์ฝ ์กฐ๊ฑด์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์๊ณ SkParsePath์ ๋ง์ฐฌ๊ฐ์ง๋ก SkParsePath๋ ๊ฐ ๊ทธ๋ฆฌ๊ธฐ ๋ช ๋ น์ ๋ํด ์๋ณต์ด ์๋ ๊ฒฝ๋ก๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ๊ธฐ๋ณธ ์ธก์ ํ ๋ฒ ์๋ณต). ์ ๋ ๋น์ทํ ์ด์ ๋ก @matanlurey ๋ฅผ ์ฌ์ฉํ์ง ์์์ต๋๋ค.
https://github.com/flutter/flutter/blob/master/dev/tools/vitool/lib/vitool.dart , https://github.com/dnfield/flutter_svg (ํ์ฌ ๋ SVG๋ฅผ ๋ ๋๋งํ ์ ์์ ํด๋น ํ๋ก์ ํธ์ ์บ๋ฒ์ค์ ํฌํจ๋จ) ๋ฐ https://github.com/dnfield/engine/tree/path_svg (ํ์ฌ Lottie์ ๋ํ PathMeasure/PathMetrics ๊ด๋ จ ์์ ๋ ํฌํจ๋์ด ์์).
์๋ ํ์ธ์ @dnfield ์ ๋๋ค .
๋ค์์ ๊ทํ์ ์ด๊ธฐ ๊ตฌํ์ ๋ํ ์ ์๊ฒฌ์ ๋๋ค. ๋ด๊ฐ ๋ฌด์จ ๋ง์ ํ๋ ์ฌ๋ฌ๋ถ์ ์ด์ ๊ณผ ์ฝ๋ฉ ์งํ์ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋์ค์ ํญ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ด ํ ์๋ก ๋ ์ข์ต๋๋ค.
๋ด๊ฐ ๊ฐ์ง ๋ฌธ์ ๋ ์ํคํ ์ฒ์ด๋ฉฐ ์ฌ๊ธฐ์ ์ด์ ๊ฐ ์์ต๋๋ค. UI๊ฐ 60ํ๋ ์/์ด๋ก ์๋ตํ๋๋ก ํ๋ ค๋ฉด ๊ฐ ํ๋ ์์ด UI๋ฅผ ์ฐจ๋จํ๊ธฐ ์ ์ ์คํํ๋ ๋ฐ ~16ms๋ง ์์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ฐ์ด Flutter์์ ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค๊ณ ๊ฐ์ ํ๊ณ SVG ํ์์ 8ms๋ฅผ ๋จ๊ฒจ๋๊ณ ํด๋์ ํ/ํ๋ธ๋ฆฟ์ด ์๋ฌด๋ฆฌ ๊ฐ๋ ฅํ๋๋ผ๋ ํด๋น ๊ธฐ๊ฐ์ SVG ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ฆฐ ์ฅ์น๋ฅผ ๋์์ผ๋ก ํ๊ณ ์ฌ๋ฌ ํ๋ ์์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์๋ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ํต์ฌ์ ๊ฐ ํ๋ ์์ด ์ต๋ 8ms๊น์ง๋ง ์คํํ ์ ์๊ณ ๋ค์ ํ๋ ์์์ ๋ฐํ ๋ฐ ์ ํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋น๋๊ธฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ dart:xml ์ ์ฌ์ฉํ์ฌ XML์ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ผ๋ฉฐ ์ ์ฒด ํ์ผ์ด ๊ตฌ๋ฌธ ๋ถ์๋ ๋๊น์ง ์ฐจ๋จ๋ฉ๋๋ค. ๋ํ ์ด๋ฏธ์ง ์์ฑ์ 8ms ์์ ๋ชจ๋ ๊ฒ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ์์ด์ด์ผ ํฉ๋๋ค. ์ฑ๊ธํ๊ฒ ์ฝ๋๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก ์ฝ์ ์ ์๋ ์ต์์ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค. ๋๋ ํจ๊ณผ๊ฐ์์ ๊ณํ์ด ์์ง๋ง ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ด๋ฏ๋ก ํญ์ ๋น์ ์ ์์ ์ ๊ฐ์ ธ ์์ ๋์ค์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋น์ ์ฒ๋ผ ๊ณ์ ํด์ฃผ์ จ์ผ๋ฉดํฉ๋๋ค. ๋ด ๋์์ธ์ ํ์ฌ ์ด๋ฏธ์ง ๋ก๋ ๊ธฐ๋ฅ(AssetImage ๋ฐ NetworkImage)์ ์ฐ๊ฒฐ๋๋ฉฐ ์ฌ์ฉ์๋ '.png' ๋์ '.svg'๋ฅผ ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์นด๋ฅผ๋ก์ค.
@cbazza ๊ทธ๋ฅ ์์ด๋์ด: ํ์ฑ์ ๋ถ๋ฆฌํ์ฌ ์ํํ ์ ์์ต๋๋ค. UI ๊ฒฉ๋ฆฌ ์ด์ธ์ ๊ฒฉ๋ฆฌ์์ ๋ฉ์์ง ์ฑ๋๊ณผ ํต์ ํ๊ณ ๋ณต์ฌ ๋์ ์ฐธ์กฐ๋ก ๊ฒฉ๋ฆฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋๋ก ๋ช ๊ฐ์ง ์์ ์ด ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค(์ํ๋ ์งํ ์ํฉ์ ํ์คํ์ง ์์).
@cbazza - ๊ฐ์ฌํฉ๋๋ค. ๋๋ dart_xml์ด ์ด์ ๋ํ ์ต์ ์ ์๋ฃจ์
์ด๋ผ๊ณ ์๊ฐํ์ง ์์ง๋ง, ์๋ํ๊ณ ๋๋ก์ ๋ก์ง ์ฃผ๋ณ์์ ์ฝ๊ฐ์ ์งํ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค(๋น๋๊ธฐ XML ํ์๋ฅผ ๊ตฌํํ๋ ๋์ ์ด๊ฒ์ ์์ ํ ์ฐจ๋จํ๊ณ ์ถ์ง ์์์ต๋๋ค). ๋๋ ๋ํ ImageProvider
๊ตฌํ์ ๋ํด ์ดํด๋ณด๊ธฐ ์์ํ์ง๋ง ์ด๊ฒ์ด ์ฌ์ฉ์์๊ฒ ๋ชจํธํ ์ ์๋ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ด API์ ๋ํด ์ด๋ค ์์ผ๋ก๋ ์ค์ ๋์ด ์์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ต์ํ SVG ๊ทธ๋ฆฌ๊ธฐ๋ถํฐ ์์ํ ์ ์์ผ๋ฉฐ ์๋ง๋ ๊ด์ฐฎ์ ํด๋ํฐ์์ ๊ฐ๋จํ ๊ฒ์ ์ง์ํ ์ ์์ ๊ฒ์ ๋๋ค.
XML/SVG ์ฝ๊ธฐ/ํ์ฑ API ์์ ์ ํ์๊ฒ ์ต๋๊น?
@zoechi - ์คํธ๋ฆฌ๋ฐ ๋ฆฌ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ํจ์ฌ ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ ๋ ๋์ ๊ตฌ๋ฌธ ๋ถ์ ์๊ฐ์ ์ป์ ์ ์์ต๋๋ค.
@zoechi ์, ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์์ง๋ง ๊ธฐ๋ณธ ๊ฐ(null, num, bool, double, String)๊ณผ ๋ชฉ๋ก ๋ฐ ๋งต๋ง ์ ๋ฌํ ์ ์์ผ๋ฉฐ ๊ฐ์ฒด ๋ฐ/๋๋ ๊ฐ์ฒด ํธ๋ฆฌ๋ ์ ๋ฌํ ์ ์์ผ๋ฏ๋ก ๋น๋๊ธฐ ๊ฒฝ๋ก๊ฐ ๋ ์ข์ ๋ณด์์ต๋๋ค. async xml ํ์ฑ์ ์์๋ด๋ ๊ฒ์ ๋ํ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ ์ ์์ ฏ์ด๋ ์์ ํธ๋ฆฌ์ ๊ฐ์ ๋ชจ๋ ๋น๋๊ธฐ ํธ๋ฆฌ ์ฒ๋ฆฌ์ ๊ฐ๋ ์ด ์ ์ฉ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๋ฅผ ๋ค์ด React์ Fiber์์์ ๊ฐ์ด ๋น๋๊ธฐ ์กฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค. :)
@dnfield ์ ๋น๋๊ธฐ xml/svg ํ์/ํ๋ก์ธ์์์ ์์ ์ค์ ๋๋ค.
์น ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ SVG๋ฅผ ๋ ๋๋งํ๋ ๊ฒ์ด ์ต์ ์ด ๋ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๊ฐ๋จํ ๋ฒํผ์๋ ๋๋ฌด ๋ฌด๊ฒ๊ณ webview๊ฐ 60 ํ๋ ์/์ด ๋ณ๊ฒฝ์ ์ฒ๋ฆฌํ ์ ์์์ง ํ์ ์ด ์์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์ด์ฝ์ ์ด๋ํ๊ฑฐ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ ๋ iOS ๊ฐ๋ฐ์๊ฐ ์๋๋ฏ๋ก ์ด์ iOS 11๋ ๋ฒกํฐ ์์ฐ์ ์ง์ ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. SVG๊ฐ ์๋๋ผ PDF์ ๋๋ค. PDF ๋ฒกํฐ ์์ฐ์ ์ง์ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๊น?
์๋์. Quartz๋ ๋ด๋ถ ๋ ๋๋ง ์์คํ ์ ์ํด PDF์ ๋ง์ ์ญ์ฌ์ ์ฐ๊ด์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก iOS ์ฅ์น์์ ์ด ์์ ์ ๋ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค. Skia๋ PDF ๋ ๋๋ฌ๊ฐ ์๋๋ฉฐ ํ์ผ ํ์(IMO)์ ์ง์๋๋ ๊ฒ๊ณผ ์ง์ํ์ง ์๋ ๊ฒ์ ๋ํด ๋ง์ ๋ชจํธ์ฑ์ ์ผ๊ธฐํฉ๋๋ค(์ฌ์ฉ ๊ฐ๋ฅํ ์์ ๋๊ตฌ๋ก ์ข์ง ์์).
PDF๋ SVG๋ณด๋ค ๋ณต์กํ๊ณ PDF/X ํ์ ์งํฉ(๋ฒกํฐ ์์ฐ์ ์ฌ์ฉ๋จ)์ ์ธ์์ฉ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. Flutter์์ PDF ๋ ๋๋ง ์ง์์ ๋ณด๊ณ ์ถ์ง๋ง SVG์ ์ถฉ์คํฉ์๋ค.
svg(์ , ์ , ๊ณก์ , ์ฑ์ฐ๊ธฐ, ์ด๋)์ ๋จ์ํ VectorDrawable ํ์ ์งํฉ์ ๋ง์กฑํฉ๋๋ค. Flutter๋ RAD๋ฅผ ํ์ฉํ๊ณ ์ง์ ํ ๋ฉํฐํ๋ซํผ(๋ฐ์คํฌํฑ ์ถ์ ์์ )์ ๋ชฉํ๋ก ํ์ง๋ง ์ง๊ธ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. Android ๋ฐ Apple ํ๋ซํผ์ ๋ชจ๋ 60"+ 4HD ํ๋ฉด์ ์์ต๋๋ค. ๋ฒกํฐ ๊ทธ๋ํฝ์ ํ์์ ๋๋ค.
PS ์ค๋ก์ง๋ง, iOS๋ฅผ ํฌํจํ ๋ง์ ํ๋ซํผ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ๋ Kotlin์ผ๋ก ์ธํด VG๊ฐ ์์ผ๋ฉด (ํ๋ฌํฐ ํ) ์์ ์ด ์ฌ๋ผ์ง ๊ฒ์ ๋๋ค. ๋ฌผ๋ก Kotlin์ ์์ง ๋ฒ ํ ๋ฒ์ ์ด์ง๋ง Flutter๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. :(
@ohir Kotlin ๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ์ฌ iOS์ Android ๋ชจ๋์์ ์๋ํ๋ ํฌ๋ก์ค ํ๋ซํผ ๋ณด๊ธฐ(๋จ์ผ ์ฝ๋)๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํด ์ฃผ์ธ์. ๋ฐ์ ๋ค์ดํฐ๋ธ ์์ ฏ ์ถ์ํ์ kotlin ๋ฒ์ ์ ๋ง๋ค ์๋๊ฐ ์๋ค๋ฉด?
๊ฐ๋ฅ์ฑ์ด ๋ฌดํํ๊ธฐ ๋๋ฌธ์ Kotlin ์์ฃผ๋ฏผ์ด ๋ฌด์์ ํ ๊ฒ์ธ์ง ๊ณผ์ํ๊ฐํ์ง ๋ง์๋ค. Cocos2d-x๋ฅผ ์ฌ์ฉํ์ฌ Flutter์ ๊ฐ์ ๊ฒ์ ๋ง๋๋ ์คํ์์ Flutter๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์คํ ์์ค์ด๊ณ ๊ต์ฐจ ์๋ถ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์ ๊ทธ๊ฒ์ ๋๋ฌด ๋ฐ/๋๋ React Native ๋ฐ/๋๋ Flutter๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. :)
์, ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ๊ฐ๋ฐ์์ kotlin ์ฌ๋๊ณผ ์ฑํ์ ์์ฒญ๋๊ณ ํ๋ซํผ ๊ฐ ์ปดํ์ผ์ ๋ฌดํํ ๊ฐ๋ฅ์ฑ์ ๋ง๋ญ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋๋ ๋ชจ๋ฐ์ผ ํฌ๋ก์ค ํ๋ซํผ์ฉ Flutter ๋ฒ ํ์ Kotlin ๋ค์ดํฐ๋ธ ๋ฒ ํ๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ๋ฌด์๋ฏธํฉ๋๋ค.
์ด์จ๋ ์ฃผ์ ์์ ๋ฒ์ด๋ฌ์ต๋๋ค.
@lukaspili ์ง๊ธ๊น์ง Android์ฉko๊ฐ ์์ต๋๋ค. ๋ ์ด์์ DSL์ ๊ฐ ํ๋ซํผ ํ์ ํธ๋ฆฌ์ ํฌํจ๋ apko , linko ๋ฐ winko*์์๋ ๊ทธ๋๋ก ์๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ Flutter VG ๋ฌธ์ ์ ๋ํ OT์ ๋๋ค. [*์(๋) ์์ง ์กด์ฌํ์ง ์์ต๋๋ค.]
๋ชจ๋ ์ด์ ์ ์ธ ๋ํ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ๋ฒกํฐ ํ์ ๋ฐ API์ ๋ํ ์ฌ์ฉ ์ฌ๋ก์ ์๊ตฌ ์ฌํญ์ ์ด์ ์ ๋ง์ถ๊ณ ์ถ์ต๋๋ค. ์ฃผ์ ์ ๋ํด ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! :)
์ฌ๋๋ค์ ์ด๊ฒ์ SVG ์ง์ ๋ฌธ์ ๋ก ๋๋๊ณ ์ด๊ฒ์ ์ผ๋ถ TBD ํ๋ฌํฐ ๋ฒกํฐ ํ์์ผ๋ก ์ ์งํ๋ ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํฉ๋๊น?
๊ทธ๊ฒ์ ๋์๊ฒ ์ดํด๊ฐ ๋ ๊ฒ์ ๋๋ค. ์๋ ๋ฌธ์ ๋ ์ผ์ข ์ Flutter ๊ด๋ จ ๋ฒกํฐ ํ์์ผ๋ก ํํ๋ฉ๋๋ค.
svg์ ๊ฐ์ ์ง์์ ์ํด @cbazza ๋ง์ธ. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ์ ์ ์ฒด UI๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฉํ๋ ์์ด์ฝ์ด ์๋ svgs๊ฐ ๋ง์ด ์์ต๋๋ค. ์ด๋ป๊ฒ ๋ณด๋ด์ผ ํฉ๋๊น?
ํ๋ฌํฐ๋ก ์ด๋ํ๊ณ ์ถ์ง๋ง ์๋ฐฑ๋ง ๊ฐ์ png๋ฅผ ์์ฑํ๋ฉด ์ฑ ํฌ๊ธฐ๊ฐ ์ฌ๊ฐํ๊ฒ ์ปค์ง๊ณ ๋ณด๊ธฐ ํํด์ง ๊ฒ์ ๋๋ค.
์, ํ์ผ์ ๋ณผ ์ ์๋ URL์ ๋ณด๋ด์ฃผ์ญ์์ค.
๋ฐ๋ผ์ ์ด ์์ ์์ ์ ๋ Flatbuffer ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ถ๊ตฌํ๊ณ ์์ต๋๋ค. ์ ๋ Skia๊ฐ ๊ฒฝ๋ก๋ฅผ ์บก์ฒํ๋ ๋ฐฉ์๊ณผ ๊ฐ์ด ๋ฒกํฐ ๋๋ก์ ๋ช ๋ น์ ์บก์ฒํ ์ ์๋ Flatbuffer ์คํค๋ง๋ฅผ ์ ์ํ๋ ์ค์ ๋๋ค.
๋๋ ์ด๊ฒ์ด SVG์ ๋ฐ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์๊ณ (์: SVG ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃฐ ์ ์๋ SVG -> Flatbuffer ๋ณํ ๋๊ตฌ ๋๋ Android Vector Drawable XML -> Flatbuffer๊ฐ ์์) ๋ง์ ์ฑ๋ฅ ์ ํ๋ฅผ ํผํ ์ ์์ต๋๋ค. SVG์ ์ง๋ฉดํ์ต๋๋ค(์คํธ๋ฆฌ๋ฐ XML ๊ตฌ๋ฌธ ๋ถ์ ๋ถ์กฑ, SVG ๊ฒฝ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ ๋ค์ ๋นํธ ๋จ์๋ก ๊ธฐ๋ณธ์ผ๋ก ๋ณด๋ด์ผ ํจ). ๋๋ ๋ํ SVG ํ์๋ณด๋ค ๋ ์์ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์์ฑํ ์ ์์์ต๋๋ค(๋น๋ก ์ผ๋ง๋ ์ ํ์ฅ๋ ์ง๋ ๋๊ณ ๋ณผ ์ผ์ด์ง๋ง).
๋ํ ์ฃผ์ด์ง SVG์์ ์ง์๋์ง ์๋ ๊ธฐ๋ฅ์ ๋ํด ๋ณํ ๋๊ตฌ์์ ๋ฏธ๋ฆฌ ๋ ๋ช ํํ๊ฒ ์ ๊ณตํ ์ ์์ด์ผ ํฉ๋๋ค(์: "ForeignElements๋ ์ด ํ์์์ ์ง์๋์ง ์์ต๋๋ค").
Flatbuffer ํ์ฑ ๋นํธ๋ Dart ๋๋ C++์์ ์ํํ ์ ์์ต๋๋ค. dart์ ํ ๊ฐ์ง๋ ๊ฒฝ๋ก๋ฅผ ๋น๋ํ๊ณ Canvas์์ ๊ทธ๋ฆฌ๊ธฐ ์ํด Skia์ ๋ช ๋ น์ ์ผ๊ด ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
SVG๋ฅผ Skia ๋ ธ๋ ์์ ์ผ๋ก ์ปดํ์ผ ํ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ๋ค์ด์ ์คํธ๋ฅผ ์ํํ๋ ํจ์ฌ ๋ ๊ฐ๋จํ ์๋ฃจ์ ์ด ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด SVG์ ๋ฐํ์ ๊ตฌ๋ฌธ ๋ถ์์ด ๋ชจ๋ ์ ๊ฑฐ๋๊ณ ์ค๊ฐ ๋ฒํผ์ ์ ์ง ๋ชจ๋ ์บ์ฑ์ด ํ์ฉ๋ฉ๋๋ค.
@sandrobilbeisi ๋น์ ์ https://github.com/amirh/flutter/commit/69de4bbf3177d9766a386c55b27a12619da43a05 ์ ๊ฐ์ ๊ฒ์ ์๋ฏธํฉ๋๊น?
๊ทธ๊ฒ์ ์ฃผ๋ชฉํ ๋งํ ... ๊ทธ๋ฆฌ๊ณ vitool๋ ์์ต๋๋ค https://github.com/flutter/flutter/blob/master/dev/tools/vitool/lib/vitool.dart
ํ์ง๋ง Xcode๊ฐ iOS ๊ฒฐ๊ณผ๋ฌผ์ ์ํ SVG ์์ฐ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋น๋ ๋จ๊ณ๋ก ๋ ๋ง์ด ์๊ฐํ๊ณ ์์์ต๋๋ค.
@sandrobilbeisi ์ปดํ์ผ ์๊ฐ ๋์ svgs์์ ๋นํธ๋งต์ ์์ฑํ๋ค๋ ์๋ฏธ์ ๋๊น?
BTW Xamarin ํจํค์ง ffimageloading์ ๋ ๋๋ง๋ ๋นํธ๋งต์ ์บ์ํ๋ฏ๋ก ํ ๋ฒ๋ง ๋ ๋๋ง๋ฉ๋๋ค. ๋ํ ๋คํธ์ํฌ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ์บ์ํ์ฌ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ง๋ญ๋๋ค.
๋นํธ๋งต์ด ์๋๋ผ ์๋ < ์บ๋ฒ์ค > ์ ๋ฒกํฐ ๊ทธ๋ํฝ ์์ง์ธ Skia
https://skia.org/ ( ps 12๋
์ Google์ ์ธ์๋จ : http://www.satine.org/archives/2007/03/05/the-skia-source-code-dilemma/ )
svg๋ฅผ skia ์ด๋ฏธ์ง ํ์์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?
๋ค
SVG ํ ์คํธ ํ์ผ์ ๋ํ @cbazza ๋งํฌ: https://github.com/slingshotapp/artwork
ํ๋ก์ ํธ ์์ค์์ vitool์ ์คํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์์ฑ๋ ํ์ผ์ ๋ง๋ค ์ ์์ง๋ง ๋ด ํ๋ก์ ํธ์ .g.dart
๋ฅผ ์ถ๊ฐํ์ง ๋ชปํ๋๋ก ํ๋ ๋ง์ ๋น๊ณต๊ฐ ํด๋์ค์ ์ก์ธ์คํด์ผ ํฉ๋๋ค.
<flutter>/dev/tools/vitool
์ ๋๊ตฌ ์ฐธ์กฐ: #dart bin/main.dart --asset-name=_$hello --output=here.g.dart ./test_assets/horizontal_bar_relative.svg
@emilieroberts ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ํด๋น ํ์ผ์ SVG ํ์์ด ์๋๋ผ SVG์ ๋งค์ฐ ์ ์ฌํ ์ฌ์ฉ์ ์ง์ Android ๋ฒกํฐ ํ์์ ๋๋ค.
@cbazza oops, ์ค์ ๋ก - ๋๋ถ๋ถ์ svgs๊ฐ ํ์ฌ ๊ฑฐ๊ธฐ์ ์์ต๋๋ค :)
@cbazza ์ฌ์ฉ์ ์ ์ Android ๋ฒกํฐ์ ์๋ฏธ๋ฅผ ๋ช
ํํ ํ ์ ์์ต๋๊น? Android ๋ฒกํฐ ๋๋ก์ด๋ธ๊ณผ ๋ฌ๋ฆฌ <svg
ํ๊ทธ๊ฐ ์์ต๋๋ค.
ํ์ฌ vitool๋ก ๋ฌด์์ ํ๊ณ ์๋์ง๋ ๋๋์ง๋ง ์ด๋์์๋ ๋ฌธ์์ ํ์ ์ ์ฐพ์ ์ ์์ต๋๋ค. AnimatedIcons.arrow_menu
๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฅผ ์์ฑํ ์ ์์ง๋ง, Flutter SDK ์ธ๋ถ์ ์์ฐ์์ ์ด๋ฅผ ์ํํ๋ ๋ฐ ํ์ํ ์์
๋ ์๊ณ ์ถ์ต๋๋ค.
@fmatosqg ๋ง์ต๋๋ค . vitool์์ ์์ฑํ ์ ๋๋ฉ์ด์
์ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฝ๋๋ ํ๋ ์์ํฌ ์ ์ฉ์
๋๋ค. ๊ทธ ์ด์ ๋ Flutter์ ์ ํฉํ ๋ฒกํฐ ํ์์ด ๋ฌด์์ธ์ง(์ด ๋ฌธ์ ์์ ์ถ์ )์ ๋ํด ์ฌ์ ํ ๋ฏธํด๊ฒฐ ์ง๋ฌธ์ด ์๊ณ ํน์ ํ์์ ์ง์ํ๋ ๊ณต๊ฐ API๋ฅผ ํผํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฐ๋ฆฌ๋ ๋ฏธ๋์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ํ์ง ์์ต๋๋ค).
AnimatedIcon์ ๋ํ ํ์ฌ API ํ๋ฉด์ ํตํด ํ๋ ์์ํฌ์์ ๋ด๋ถ์ ์ผ๋ก vitool์ ์ํด ์์ฑ๋ ํ์ผ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ๋ฅผ ์ค๋จํ์ง ์๊ณ ๊ธฐ๋ณธ ๊ตฌํ ๋ฐ ๋ฒกํฐ ํ์์ ๊ณ์ ๊ต์ฒดํ ์ ์์ต๋๋ค.
vitool์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์์ฑํ๊ณ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ค๋ฉด packages/flutter/lib/src/material/animated_icons
์์ ์ฝ๋๋ฅผ ๋ณต์ฌํ๊ณ ํ๋ก์ ํธ์ ์ผ๋ถ๋ก ํฌํจํ๋ฉด ๋ฉ๋๋ค. AnimatedIcon์์ ์ฌ์ฉํ๋ ๊ธฐ๊ณ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค).
๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ๋น ๋ฅธ ์์ผ ๋ด์ ๋ ๋์ ์๋ฃจ์ ์ ์ป์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ํนํ https://github.com/flutter/flutter/issues/13834 ๊ฐ ์งํ๋๋ค๋ฉด ์ด ์์ด๋์ด๊ฐ ๋ง์์ ๋ญ๋๋ค. ๋๋ ๊ทธ๋ฌํ ๊ฒ์ด ๋ชจ๋๋ฆฌ์ SDK์ ์ผ๋ถ๊ฐ ๋์ด์๋ ์ ๋๋ค๊ณ ์๊ฐํ์ง๋ง, ๊ทธ๊ฒ์ด ๊ณต์ ๋๋ ์ปค๋ฎค๋ํฐ ํจํค์ง๋ผ๋ฉด ํน๋ณํ ๊ฑฑ์ ํ์ง ์์๋ ๋ฉ๋๋ค.
ํฐ G ์ ๋๊ตฐ๊ฐ๊ฐ Shiny (Go ๋ฐ์คํฌํ ํ๋ ์์ํฌ)๋ฅผ ์ํด ๋ง๋ svg์ ํ์ ์งํฉ์ ๋ํ ์์ถ ํ์ ์ด ์์ต๋๋ค. ๋ฐ์ด๋๋ฆฌ ํํ์ด๋ฉฐ ๊ธฐ๋ณธ Android ์คํ๊ธฐ ์์ด์ฝ ํฌ๊ธฐ๋ฅผ 100๋ฐ์ดํธ ๋ฏธ๋ง์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์์ ์ค๋ ๋ ๋ฐ IMSO์์ ์ค๋ช
ํ ๋๋ก ๋ฒกํฐ ๊ทธ๋ฆฌ๊ธฐ๋ Skia์ ์๋ฌด์ฌ์ผ ํ๋ฉฐ Flutter๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ฐ๊ฒฐํ ํํ์ ์ ๋ฌํฉ๋๋ค. res/
svg ํ์ผ์ ๋ด๋ถ ํ์์ผ๋ก ์ปดํ์ผํ๋ ๋๊ตฌ์ ์๋ฌด์
๋๋ค.
[ @amirh Re: ์ข์ ๋ฒกํฐ ํ์์ด ๋ฌด์์ธ์ง์ ๋ํ ์ด๋ฆฐ ์ง๋ฌธ ]
๊ทธ๋์ FWIW์์ flutter_svg์์ ๋ชจ๋ ๊ทธ๋ฆผ์ด ์ค์ ๋ก ์ค๊ฐ ๊ฐ์ฒด์ ์ํด ์ํ๋๋๋ก ์ฝ๋๋ฅผ ๊ณต์ํํ์ต๋๋ค. SVG ๊ด๋ จ ์์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก SVG๋ฅผ ํด๋น ๊ฐ์ฒด์ ๋งคํํ๋ ๊ฒ์ ๋๋ค. ์ค๊ฐ ํ์์ ์์ ํ ์์ ํํ๋ ค๋ฉด ์์ง ํด์ผ ํ ์ผ์ด ์์ต๋๋ค(์: ํ ์คํธ ์ง์์ ์์ํ์ง๋ง ์ง๊ธ์ ๋งค์ฐ ์ข์ง ์์ต๋๋ค).
Android Vector Drawables์ ๋ํ ์ง์์ ํ๋ ์์ํฌ๋ก ์ด์ํ๊ธฐ ์์ํ์ต๋๋ค(์ธ๋ถ ์์ ๋ฐ ์คํ์ผ ์ฐธ์กฐ ๋ฑ์ ๋ํ ์ง์ ์ ์ธ, ์์ง ํด๋ฆฝ ๊ฒฝ๋ก ๋๋ ๊ธฐํ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์). ์ด๋ฐ ์์ผ๋ก Shiny๋ฅผ ์ง์ํ๊ฑฐ๋ ์ค์ ๋ก ๋ค๋ฅธ ํ์์ ์ง์ํ๋ ๊ฒ์ด ์์ ํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์ง์ํด์ผ ํ ๋ง์ ํฅ๋ฏธ๋ก์ด ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ์ด ์์ ์์ SVG๋ฅผ ํตํด ์์ ํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ๊ทธ๋์ ์ง๊ธ์ ๊ทธ๊ฒ์ด ์ ์ฃผ์ ์ด์ ์ ๋๋ค.
์ด ์ค๋ ๋์ JSX ์ง์์ ๋ํ ๊ธด ์ค๋ ๋๋ฅผ ์ฝ์ ํ ๊ฑฐ๋ฒ๋์ค ๋ฌธ์ ๊ฐ ์๋ค๋ ์๊ฐ์ ์ง์ธ ์ ์์ต๋๋ค. Flutter ํ์ _์์ ๋ค์ด_ ๋๋ผ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ๋๋ผ๋ ๊ฐ๋ฐ์์ ์๊ตฌ์ ๋ฐ๋ผ ์์ฒ ๊ฐ์ง ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋๋ ค๊ฐ ์ํ์ด ์์ต๋๋ค. ์๋ง๋ Flutter๋ Apache์ ๊ฐ์ "์ธํ๋ฒ ์ดํฐ" ํ๋ก์ ํธ๋ฅผ ๋์ ํด์ผ ํฉ๋๋ค. ์์ฒญ๋ ๊ธฐ๋ฅ์ Flutter ํ ์์ฒด์ ๊ธฐ์ฌ๋ก ์คํ ์์ค ๋ฐฉ์์ผ๋ก ํ๋ฌ๊ทธ์ธ์ ์ํด ๊ตฌํ๋ฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ด ์ถฉ๋ถํ ์ง์, ํจ๋ฅ ๋ฐ ์ธ๊ธฐ๋ฅผ ์ป์ผ๋ฉด ํต์ฌ Flutter ํ๋ ์์ํฌ์ ํฌํจ๋ ํ๋ณด๊ฐ ๋ฉ๋๋ค.
๋๋ ์ด๊ฒ์ด ๋๋ถ๋ถ์ ๋ณด์ปฌ ๊ฐ๋ฐ์๊ฐ ์ฌ๊ธฐ์ ํ์๋๋ ๊ฐ์ด๊ณผ ๋์น์ ์์กดํ๊ธฐ๋ณด๋ค "์ ์ด ์๋ ๊ณณ์ ์ฝ๋"๋ฅผ ๋ฃ์ ์ ์๊ฒ ํ๊ณ Flutter ํ์ด ํต์ฌ ์์ง๋์ด๋ง์ ๋ ์ง์คํ ์ ์๋๋ก ํด์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ ์คํ๊ฒ ๋์ํ์ง ์์ต๋๋ค. ๋ฒํท 5์ ๊ฐ์ ์ด์ ํ๋ฅผ ์ดํด๋ณด๋ฉด ํ์ด ๋ฌด์์ ํ๊ณ ์๋์ง ์ ์ ์๊ณ ๋ฒํท 6์ผ๋ก ์ด๋ํ๋ฉด ์ฐ์ ์์๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค. ๋ํ ๋ค๋ฅธ ์ด์ ํ๋ฅผ ๋ณด๋ฉด ๊ธด๊ธํ์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค.
๋ํ ํ๋ฌํฐ ์ฝ์ด์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ์ด์ ๋ "ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค ์ ์๊ณ ๋ชจ๋์๊ฒ ์๋ํ๊ณ ๋ชจ๋๊ฐ ์ํ๋ค"๋ ๊ฒ ์ด์์ด์ด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ด ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ์ด์ ์ด์ง๋ง ์ด ์ ์ฅ์๋ ๋ค๋ฅธ ํ๋ฌํฐ ์ ์ฅ์์ ์ถ๊ฐํ๊ธฐ์๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ด ๋์ด์๋ ์ ๋๋ ๊ฒ๋ค์ ์: @dnfield ๊ฐ ์์ง์ ์ถ๊ฐํ์ฌ ๊ทธ๊ฐ ์์ ํ ํ๋ฌ๊ทธ์ธ์ ์ด์ ์ ์ป๊ณ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํ๋ฌ๊ทธ์ธ์ ์์ง์ ์ถ๊ฐ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํํ ๊ธฐํ๊ฐ ์์ต๋๋ค.
๋ชฉ์๋ฆฌ๋ฅผ ๋ด๋ ๊ฒ์ด ์ค์ํ์ง๋ง ๊ทธ๊ฒ์ด ํต๊ณผํ ๊ฒ์ด๋ผ๋ ๋ณด์ฅ์ ์์ต๋๋ค. ์ ์ด ์๋ ๊ณณ์ ์ฝ๋๋ฅผ ๋ฃ๋ ๊ฒ๋ ์ค์ํ์ง๋ง ์ฌ์ ํ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ ํฌ๋ช ์ฑ์ด ๋๊ณ ๊ฐ๋ฐ์์ ๋ง์ ๋ถ๋ช ํ ๊ฒฝ์ฒญํ์ง๋ง ๋ฏผ์ฃผ์ฃผ์๊ฐ ์๋๋ฉฐ ๊ฒฐ๊ณผ์ ๋ํ ์ถ๋ก ์์ด ๋์ค ํฌํ๊ฐ ์น๋ฆฌํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
์, Flutter์ ํ๋ ์์ํฌ์์ ์์ ํ๋ ๊ฐ๋ฐ์๊ฐ ๋ฒ๊ทธ์ ๋ํ ํ ๋ก ์ผ๋ก ์ธํด ์ฃผ์๊ฐ ์ฐ๋งํด์ง์ง ์์๊น ๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. :-) ์ฐ๋ฆฌ๋ ํ ๋ก ์ ์ฝ๊ณ ๋ชจ๋ ์ฌ๋์ ์๊ฒฌ์ ๋งค์ฐ ์ค์ํ๊ฒ ์๊ฐํ์ง๋ง ๊ฒฐ๊ตญ์๋ ๋ช ํํ ์ง์นจ ์์น ์ด ์์ผ๋ฉฐ ๊ฐ์ฅ ํฐ ๋ชฉ์๋ฆฌ์ ๋ฐ์ํ์ง ์์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ ์ ์ฒด๊ฐ ๋ฌด์์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ ํ๊ธฐ ์ํด ์ ์คํ ์์ฅ ๋ถ์์ ์ํํฉ๋๋ค.
๊ฐ๋จํ ์ง๋ฌธ์ ๋จ๊ธฐ๋ ํฅ๋ฏธ๋ก์ด ๋ํ. Flutter ํ์ Flutter์์ ๋์์ธ ๋จ๊ณ(SVG)์์ ๋ฒกํฐ ๊ทธ๋ํฝ์ผ๋ก ์ด๋ํ ๊ฒ์ ์ด๋ป๊ฒ ๊ถ์ฅํฉ๋๊น?
@lukepighetti https://github.com/dnfield/flutter_svg ๋ฅผ ์๋ํ๊ณ ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ ๋ Flutter์ SVG ํ์ผ์ ๋ํด ์ ๊ณต๋๋ ์๋ฃจ์ ์ ๋ง์กฑํ์ง ์์ต๋๋ค. ๋๋ flutter_svg ํจํค์ง๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋ง์กฑํ์ง ์์ต๋๋ค.
SVG ์ง์์ ๋ด ์๊ฐ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋์ด์ผ ํฉ๋๋ค. ๋ฐ์คํฌํ ์ฑ ๋ฐ ์น์ฌ์ดํธ์ ๊ฐ์ ๋ ํฐ ํ๋ฉด์์ Flutter๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ ค๋ฉด ์ด๊ฒ์ด ํ์์ ๋๋ค.
@socialmammoth ์ด๋ค ๊ฒฐํจ์ด ์๋์ง ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ด๊ฐ ์ ์ ์๊ณ ํด ์จ ํ ๊ฐ์ง๋ .skp(SKIAPICT) ํ์์ ์ง์ํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์๋์ง ์ฌ๋ถ์ ๋๋ค. ์ง์ ํ์ง ์๋ ๋ฐ๋ ์ถฉ๋ถํ ์ด์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์์ Skia์ ํฐ ๋ฒ์ ์ด ๋ ๋๋ง๋ค ๋ฒ์ ์ด ์์ ์ ์ผ๋ก ๋ณด์ฅ๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์์ฑ์ด ์์ต๋๋ค. ํนํ Chrome/Chromium์์ SKP(๋ ๋๋ง๋ SVG)๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฉฐ ์ค์ ๋ก ํ์ํ ๋๋ถ๋ถ์ ๋๋ ๋ชจ๋ Skia ๊ทธ๋ฆฌ๊ธฐ ๋ช ๋ น์ ์ด๋ฏธ ์ง์ํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. ๋๋ค์์ SKP๋ฅผ ๋ ๋๋งํฉ๋๋ค.
SVG์์ Dart/Flutter ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก SVG ํ๋ฌ๊ทธ์ธ์ ๋ํ ์ฝ๋ ์์ฑ ์ ํ์ ์๋ฃจ์
์ ๋ง๋ค ๊ณํ์ด์์ต๋๋ค. ์ด ์์ ์์ SKP to Dart ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์กฐ์ฌํ๋ ๊ฒ์ด ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Flutter SVG์ฉ์ผ๋ก ์์ฑ๋ ์ผ๋ถ ์ฝ๋๋ ํ๋ ์์ํฌ(์: RawPicture
๋ฐ ๊ด๋ จ ์ธํ๋ผ๋ก ์ด์๋ ์ ์์ต๋๋ค. ๋๋ต RawImage
์ ํด๋นํ๋ฉฐ SKP์ ์ถ๋ ฅ์ ๊ฐ์ ธ์ค๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค(์ด์จ๋ SVG ๋ ๋๋ง์ ๊ฑฐ์ ํ์ค์ธ Chrome์์ ๋ ๋๋งํ SVG์์ ์์ฑ๋จ). SVG๋ฅผ ์ฌ์ฉํ๋ ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ ํค๋๋ฆฌ์ค Chromium์ ํธ์ถํ์ฌ SKP๋ก ๋ ๋๋งํ ๋ค์ SKP๋ฅผ Flutter๊ฐ ๋ฐํ์์ ๋ ๋๋งํ ์ ์๋ ์ผ๋ถ Dart ํ์ผ๋ก ๋ณํํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ด ํด๊ฒฐ๋์ง ์๋ ํฐ ์์ญ ์ค ํ๋๋ ๋ฐํ์์ ๋ฒกํฐ ๊ทธ๋ํฝ์ ๋์ ์ผ๋ก ๋ก๋ํ๋ ๊ฒ์
๋๋ค(์: SvgPicture.network
). ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ํ์๋ ๋ถ๊ตฌํ๊ณ ์ด๊ฒ์ด ์ฌ์ ํ ๊ฐ์น ์๊ณ /ํ์ฉ๋๋ ์๋ฃจ์
์ธ์ง์ ๋ํ ํผ๋๋ฐฑ์ ๊ด์ฌ์ด ์์ต๋๋ค.
๋ํ ์ด ์์ ์์ Flutter์์ SVG์ ๋ํ "๊ธฐ๋ณธ" ์ง์์ ๋ฐ์ง ๋ชปํ ๊ฒ์ด๋ผ๋ ๋ฏฟ์์ผ๋ก ์ด ๋ง์ ํฉ๋๋ค. ์ด๋ ๋ถ๋ถ์ ์ผ๋ก SVG ์์ฒด์ ๋ธ๋ผ์ฐ์ /HTML ๋ ๋๋ง ์ํํธ์จ์ด ์ธ๋ถ์์ ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํ์ง ์์ ๋ง์ ์ํ๋ฌผ(XML, CSS, ์ธ๋ถ ์์ฐ์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ)์ด ์๊ณ ์ฐ๋ฆฌ๊ฐ ์๋ํ๋ ์ํํธ์จ์ด์ ๋ง์ ํฝ์ฐฝ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ธฐ๋์ด. ํ๋ ์์ํฌ๋ฅผ ํฌ๊ฒ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์๋นํ ์์ SVG๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์์ ํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๊ธฐ๋ ํฉ๋๋ค. ํ์ง๋ง ๋ช ๊ฐ์ง ์ฌํญ(ํนํ ํ์ฌ filterEffect
s ๋ฐ textPath
)์ ์๋ง๋ ์์ง์ ๋ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์กฐ์ ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
๋คํธ์ํฌ์์ ์ง์ SVG๋ฅผ ๋ก๋ํ ์ ์๋ค๋ ๊ฒ์ ํ์ ๊ธฐ๋ฅ์ ํ์ ์งํฉ๋ง ์ง์ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋๋ผ๋ ์ฃผ์ ์ด์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Flutter ์ ์ฉ ๋ฒกํฐ ํ์์ ๊ฐ๋ ๊ฒ์ Android๊ฐ VectorDrawables๋ก ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋๋ฐ, ์ด๋ ์ ์๋ํ์ง๋ง SVG์ ์ด๋ฏธ ์กด์ฌํ๋ ๋ง์ ๋๊ตฌ์ ์ด์ ์ ๋๋ฆด ์ ์๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ํ ๋ชจ๋ ํ์ ๋ณํ์ผ๋ก ์ธํด ๋์์ธ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด ์ด์ํฉ๋๋ค.
Flutter๊ฐ 2018๋ ํ๋ ์์ํฌ์์ ๊ธฐ๋ํ๋ ๊ฒ์ด ๋ฐ๋ก ์ด๊ฒ์ด๊ธฐ ๋๋ฌธ์ Flutter๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก SVG๋ฅผ ์ง์ํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ ๋ ์ํ๊ณ๊ฐ ์ฑ์ฅํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ํ๋ก ํธ ์๋ ๊ฐ๋ฐ์๊ฐ Flutter์ ์ก์ธ์คํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@dnfield
.skp(SKIAPICT) ํ์.
IMHO ํฅ๋ฏธ๋ก์ด ์ ๊ทผ ๋ฐฉ์. ๊ทธ๋ฌ๋ Flutter ๋๊ตฌ(์ ์ด๋ AS์์๋)๋ ๋ณํ์ ์ํํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋์์ด๋๋ ํ์ฌ Android์ ๋ฒกํฐ ๋๋ก์ด๋ธ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ๋ถ๊ณผํ๋ ์ ํ ์ฌํญ์ ์ด๋ ์ ๋ ์ต์ํ๋ฏ๋ก ๋ค๋ฅธ ํด์ผ ํ ์ผ๊ณผ ํ์ง ๋ง์์ผ ํ ์ผ์ ํ์คํ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ผ๋ฐ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ๋งค๋ด์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ์ด์ผ ํฉ๋๋ค. " svg ๋๋ฉด์ ์ฌ๊ธฐ์ ๋๋กญํ๊ณ ์ฌ๊ธฐ์ ์ฃผ์์ ๋ฌ๊ณ ๋ง์๋๋ก ์ฌ์ฉํ์ญ์์ค. svg๊ฐ ์ง์๋๋ SVG ํ์ ์งํฉ(์ฌ๊ธฐ ์ฐธ์กฐ)์ ์ค์ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ ๋๋ ๋ถ์๊ธฐ( flutter analyze
)๊ฐ ์๋ ค์ค๋๋ค. ๋น์ ์ ๋น์ ์ svg์ ๋ฌด์์ด ์๋ชป๋์๋์ง ". ๋๋ ๊ทธ๋ฐ ๊ฒ.
@dnfield
์์ฑํ Chrome/Chromium ๊ฐ์ ธ์ค๊ธฐ
PoC ๋ฐ ํ ์คํธ์๋ ์ ํฉํ์ง๋ง ์ค์ ์๋ฃจ์ IMHO๋ ๊ทธ๋ ๊ฒ ํฐ ์ข ์์ฑ์ ํ์๋ก ํ์ง ์์ ์ ์์ต๋๋ค. ๋ฌผ๋ก ๋ฒ ํ์์ ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ '์ด๋ ค์ด ๋ฐฉ๋ฒ'์ผ๋ก ๊ด์ฐฎ์ ์ ์์ต๋๋ค. skPicture๊ฐ ํ์ฉํ๋ ์ฌ์ด ์ ๋๋ฉ์ด์ ๊ทธ๋ฆผ์ ์ป์ผ๋ ค๋ฉด. ๋ด๊ฐ ํ๋ฆด ์๋ ์๋ค. ๋์์ด๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ธํธ๋ถ ๋ฎ๊ฐ ์๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ํฐ ์๋์ด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์์ ์ํ์ ์์ฃผ ๋ณ๊ฒฝ๋ฉ๋๋ค. ํ๋กํ ํ์ ๋จ๊ณ๋ฟ๋ง ์๋๋ผ ์ถ์ ์์ ์ด ๋ค๊ฐ์ค๊ณ ๊ฐ๋ฐ์๋ค์ ๋ฒ๊ทธ ํํ ์ดํ์ ํฉ์ธ์ ๋๋ค.
[์ฆ. ์ฐ๋ฆฌ๋ ์ผ์นํ๋ svg ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ฌํฐ ๋๊ตฌ๊ฐ ํ์ํ๊ฑฐ๋ ํฌ๋กฌ์ด ์ ์ ์ผ๋ก ๋์์ด๋์ ์์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ๊ฐ๋ฐ์์ ๊ฒ์ด ์๋๋๋ค.]
์ถ์ . launcher_icons ํจํค์ง ๋ฐฉ์์ ์์ํ ๋ flutter packages pub run flutter_svg_to_skp:main -i path/to/svgs -o path/to/skps
ํ ์ ์์ต๋๋ค.
-- ๋ด ยข2
@cachapa
๋คํธ์ํฌ์์ ์ง์ SVG๋ฅผ ๋ก๋ํ ์ ์์
์ด๊ฒ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค๋ฃฐ ๋ณ๋์ ๊ฑฐ๋ํ ํจํค์ง์ ๋ํ ์์
์
๋๋ค.
๊ฐ๋ฅํ ๋นํธํ์ฑ๊ณผ ์์ฐ์์ ๋ณ๋์ ๋ํด.
๋จผ์ "๋คํธ์ํฌ์์ SVG ๋ก๋" ํจํค์ง๊ฐ ์ฌ์ฉํ ๊ฐ๋ฐ์ ์ ๊ณต ๋ฒกํฐ ํ์์ ๊ทธ๋ฆฌ๋ ์์ง์ ๊ฐ์ ธ์ต๋๋ค. :)
@cachapa ๋ฐ @ohir - flutter_svg _already_๋ ๋คํธ์ํฌ๋ฅผ ํตํ SVG ๋ก๋๋ฅผ ์ง์ํฉ๋๋ค( SvgPicture.network
). ๊ทธ๋ฌ๋ ๊ทธ ํจํค์ง๋ ๊ฒฐ๊ตญ SVG ์ฌ์ ์ ์ฒด๋ฅผ ์ง์ํ์ง ์์ ๊ฒ์
๋๋ค. ๋ชฉํ๋ ์ค์ ๋ก ๋๋ถ๋ถ์ SVG๋ฅผ ๋ ๋๋งํ๊ธฐ์ ์ถฉ๋ถํ ์ฌ์์ ์ง์ํ๋ ๊ฒ์
๋๋ค. ์ด ์์ ์ ์ฃผ์ ์์ธ๋ fliterEffect
์ด๊ณ (ํ๋ฆผ ํจ๊ณผ, ์์ ํํฐ ๋ฑ์ด ์์) ๋ง์ ํ
์คํธ ๊ด๋ จ ์ง์์ด ์์ง๋ง ๋ค๋ฅธ ๋ช ๊ฐ์ง๊ฐ ์์ต๋๋ค( marker
s๋ ์ง์๋์ง ์์ผ๋ฉฐ xlink:href
์ฐธ์กฐ์ certian ์ ํ์ ์ฌ์ ํ โโ์ง์๋์ง ์์ต๋๋ค. ์ ์ฒด CSS ์ฌ์, ์คํฌ๋ฆฝํ
๋ฐ ์ํธ ์์ฉ๊ณผ ๊ฐ์ด ๋ด๊ฐ ์๋์ ์ผ๋ก ์ง์ํ์ง ์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ ์์ต๋๋ค.
@lukepighetti ์น ๊ธฐ๋ฐ ํ๋ก ํธ ์๋ ๊ฐ๋ฐ์์๊ฒ๋ง ๊ธฐ๋๊ฐ ์กด์ฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Qt๋ SVG๋ฅผ ์ง์ํ์ง๋ง ์ ํ๋ ํ์ ์งํฉ๋ง ์ง์ํฉ๋๋ค. GNOME์ librsvg๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ธ ๋ ์ง์ํ์ง๋ง ๋ค์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค(Linux ํ๊ฒฝ ์ธ๋ถ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ง ์ด๋ ต์ต๋๋ค). resvg์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณด๊ณ ์ถ์ง๋ง ๊ทธ๊ฒ์ ํตํฉํ๋ GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋ฆ ๋๋ค.
@dnfield ๋น์ ์ด ํ๋ฅญํ ์ผ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ ๋น์ ์ ์ผ์ ๋นํํ๊ณ ์ถ์ง ์์ผ๋ฉฐ ๊ทธ๊ฒ์ ๋ํด ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ์์์ด ์์๋๋ก ์๋ํ์ง ์์ ์ค๋ง์ค๋ฝ์ต๋๋ค. ๋๋ ๋ด ์์ ์ ์์ ์ ํํด์ผ ํ์ต๋๋ค. ์ ๋ ์์ ๊ฐ๋ ์๋๊ณ ์๋งน์ด๊ธฐ๋ ํฉ๋๋ค.
Flutter๋ ์ต์ ๋ธ๋ผ์ฐ์ ์ ๋์ผํ ๋ฐฉ์์ผ๋ก SVG๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ํ์์ ๋๋ค. ์น ํ์ด์ง์์ ์ง์ ๋ณต์ฌํ๊ฑฐ๋ ๊ฐ์ ธ์จ ์์ฐ์ ์์ ์์ด ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
์์งํ ๋งํด ํ๋๋๊ป๋ ์ต์ํ ํจํค์ง๊ฐ ์๋ค๋ ์ฌ์ค์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ์์์ด ํ์ํ๊ณ ํจ๊ณผ๊ฐ ํ์ํฉ๋๋ค. ์ฑ๋ฅ์ด ๋ฌธ์ ๋ผ๋ฉด ์ฌ๋๋ค์ด ๊ธฐ๋ฅ์ ์ผ๋๋ก ๊ฐ์ํ์ง ์๊ณ ๊ธฐ๋ฅ์ ๋ ์ ์๋๋ก ์ ํ์ ์ผ๋ก ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ์ค์ํฉ๋๋ค.
SVG์ ๋ํ ์ ์ฒด ์ฌ์ ์ง์์ด ํ์ํฉ๋๋ค. @lukepighetti ์ ๋์ํฉ๋๋ค. Hummingbird์์๋ ์ด๊ฒ์ด ํ์์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์น ๊ฐ๋ฐ์๊ฐ Flutter๋ฅผ ๋น์๊ณ ์ด๋ ค์ด ํจ์ค๋ฅผ ์ค ๊ฒ์ ๋๋ค.
@yjbanov ์กฐ์ฐจ๋ ์ฌ๊ธฐ ๊ทธ์ ๊ธฐ์ฌ์์ ์ธ๊ธํฉ๋๋ค: https://medium.com/flutter-io/hummingbird-building-flutter-for-the-web-e687c2a023a8
@dnfield ๊ฐ 'resvg'๋ฅผ ์ธ๊ธํ๊ธฐ ๋๋ฌธ์ @SocialMammoth ๋ ์๋ง๋ flutter_svg๋ ์์ ํ svg ์ง์ ๋์ 'SVG ์ ์ ' ์ง์์ ๋ชฉํ๋ก ํด์ผ ํ ๊ฒ์
๋๋ค.
http://www.w3.org/TR/SVG11/feature#SVG -์ ์ ,
๋ชจ๋ ์ฌ๋์ ํ๋ณตํ๊ฒ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Chrome์กฐ์ฐจ๋ ๋ชจ๋ SVG ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ผ๋ฉฐ ํนํ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋ ํ ์คํธ ๋ ๋๋ง์ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค(์ง๋ ๋ช ๋ ๋์ ์ง์ ์ด ์์). ์ฆ, ์์ ํ SVG ์ง์์ด ํ์ค์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. SVG-static์ ํฉ๋ฆฌ์ ์ธ ํ์ ์งํฉ์ธ ๊ฒ ๊ฐ์ต๋๋ค. flutter_svg์์ ํ ์คํธ hadling(๊ฒฝ๋ก์ ํ ์คํธ ํฌํจ), ํํฐ ๋ฐ ๋ง์คํฌ๊ฐ ๊ทธ๋ฆฌ์์ง๋๋ค. https://drifted.in/horologium-app/ ์ ๊ฐ์ ๋น๋๋ฅผ ์ํด Flutter์์ ์ง์ํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
@SocialMammoth
Flutter๋ ์ต์ ๋ธ๋ผ์ฐ์ ์ ๋์ผํ ๋ฐฉ์์ผ๋ก SVG๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค.
์๋์. Flutter ์ฑ์ ๊ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ๋ชจ๋ SVG๋ฅผ ์ฒ๋ฆฌํ๋ ์ ๋ฅํ ํจํค์ง์ ๊ดํ ๊ฒ์ด ์๋๋ผ "๋ฒกํฐ ๋๋ก์ด๋ธ ํ์ ์ง์" ( SVG ์ง์ ์ ํจ)์ด๋ผ๊ณ ๋ช
์์ ์ผ๋ก ๋์ ์์ต๋๋ค. ๋ด๊ฐ ์ดํดํ๋ ๊ฒ์ฒ๋ผ ๋ชฉํ๋ ์ง๊ธ๊น์ง ๋ชจ๋ ํ๋ฌํฐ ์ฑ์์ ๋นํธ๋งต ์์ฐ์ ์ต๋ํ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์์ง ์์ค์์. @dnfield ๋ ํจํค์ง๋ฅผ ํตํด ํ๋ฅญํ ์ผ์ ํ์ต๋๋ค. ์ด์ ํ๋ฌํฐ(skia) ์์ง์ด๋ ์ฑ ์์ฒด๋ฅผ ํ์ฅํ์ง ์๊ณ Dart์์ ์ฌ์ฉํ ์ ์๋ ์ผ๋ถ ๋ฒกํฐ ๊ทธ๋ํฝ์ ์ป์ ๋์
๋๋ค. .skp
์ฌ์ฉ์ ๊ทธ ๋ชฉํ๋ฅผ ์ํ ์ข์ ์ ํ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ ์ด๋ฏธ Android์ ๋ฒกํฐ ๋๋ก์ด๋ธ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ ํ์ฉํ๊ณ ์ด๋ฏธ ์์ง์ ์์ต๋๋ค. ๋์์ด๋๋ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์์ฉํ ๊ฒ์
๋๋ค.
@ohir ๋๋ ๊ทธ๋ ์ฐ๋ฆฌ๊ฐ ๋์ํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. SVG ํ์ผ์ ์ง์ํ์ง ์๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ ์ ๋ง ๋์ ๋๋ด์ ๋๋ค.
๊ธ์, ๋๋ flutter๊ฐ svg๊ฐ ์ ์ฉํ ํ์๋ ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ข์ ๊ฒ์ ๋๋ค. svg๊ฐ ์๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ๋ฒกํฐ ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฝ๊ฒ ์ป์ ์ ์๋ ์ผ๋ถ ํ์๋ณด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก SVG๋ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ํ์ค ๋ฒกํฐ ํ์์ด์ง๋ง SVG์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ๊ธฐ๋ํ ์๋ ์์ต๋๋ค. ๋ชฉํ๋ ํญ์ ์ผ๋ฐ์ ์ธ ๋ฒกํฐ ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ฒกํฐ ์์ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ต์๋ฅผ ์ง์ํ๋ ๊ฒ์ด์์ต๋๋ค. .skp
๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋ ๋ฒกํฐ ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฌด์์
๋๊น?
๋ฒกํฐ ํ์์ด ์ ๋น์ฟผํฐ์ค์ธ์ง ์ฌ๋ถ์ ๋ํ ํ ์คํธ๋ Adobe Illustrator, Affinity Designer ๋ฐ Inkscape์์ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ์ ๋๋ค. ๋ด๊ฐ ์๋ ํ SVG๋ ๊ฑฐ์ ๋จ์ ์์ต๋๋ค. ๋ชจ๋ SVG ๊ธฐ๋ฅ์ด ํ์ํ์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ธฐ๋ณธ ํจ์ค ํ ๋ฐ ์ฑ์ฐ๊ธฐ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
๋๋ ์ด๊ฒ์ ๊ถ์์๊ฒ ๋งํ ์๋ ์์ง๋ง .skp
๋ฅผ ์ง์ํ๋๋ก ๋ฒกํฐ ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค๋ํ๋ ๊ฒ๋ณด๋ค SVG์ ํ์ ์งํฉ์ ๊ตฌํํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@lukepighetti : Dan์ ์์ด๋์ด๋ ์์ง์ ๋ด๋ถ ํ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ์๋ฃจ์ ์ ํต์ฌ์ SVG๋ฅผ ์์ง์ด ์ดํดํ๋ ํ์์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋๋ค. ์คํ ๊ฐ๋ฅํ ๋ณํ๊ธฐ๊ฐ ์กด์ฌํ๋ ํ Inkscape๊ฐ ์ด ํ์์ ์๊ณ ์๋์ง ์ฌ๋ถ๋ ์ค์ํ์ง ์์ต๋๋ค.
์ด์ ๋ ์๊ตฌ์ฌ์ด ๋ค์์ง๋ง ์ค๋์ ์กฐ๊ธ ์กฐ์ฌํ ๊ฒฐ๊ณผ ํฌ๋กฌ ์๋ํ๊ฐ ์ ์ง์๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ํค๋๋ฆฌ์ค ํฌ๋กฌ ์ ๋ ๋๋ง ํ๋ก์์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค๋ฉด svg->skp
๋ณํ๊ธฐ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฝ๊ฐ ๋ฌด๊ฒ์ง๋ง ์ ๋ ดํฉ๋๋ค. ์ ๋ง ๋ฎ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ, @dnfield :).
๊ฑฐ์ 3๋ ์ ์ @Hixie ๊ฐ ์ค์ ํ ๋ชฉํ ์ ์ ๋ง์ต๋๋ค.
@dnfield ๋ด๊ฐ ํ๋ ธ๋ค๋ฉด ์ ๋ฅผ ์์ ํ์ญ์์ค.
.skp
๋ ๊ธฐ๋ณธ์ ์ผ๋ก Skia Picture์ ๋ฐ์ด๋๋ฆฌ ํ์์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
dart:ui ์๋ Dart Land์์ ์์ฑํ ์ ์๋ Skia Picture์ ๋ํ ๋ํผ๊ฐ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด ๊ทธ๋ฆผ์ ๋ด์ฉ์๋ ๋ค๋ฅธ Skia ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ง ์์ต๋๊น? ๊ธฐ๋ณธ์ ์ผ๋ก Chrome์ ๊ธฐ๋ฅ์ ๋ชจ๋ Skia ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ฐ๋ฉด dart:ui ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์ต๋๋ค(Flutter ์์ง์ ํตํด ์ ๊ณต๋๋ ํญ๋ชฉ์ผ๋ก ์ ํ๋จ)? '์ฑ๋ฅ' ์ฃผ์ฅ์ ๋ํด์ ์ข ์ด์ํ์ง ์๋์? Flutter engine & dart:ui ๋ ๋๋ฆฐ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ Skia๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ์ง๋ง(์ฑ๋ฅ ์์น๋ ํ์ํ์ง ์์) Chrome์์ ์์ฑํ .skp
ํ์ผ์ ํตํด ๋ค์ด์ค๋ ๊ฒฝ์ฐ ์ด ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ ๋ค๋ฅธ ๊ฒ์ .skp
๋ฅผ ์ฌ์ฉํ ๋ ์์ด์ฝ์ ์์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด ์์ด์ฝ์ด 2๊ฐ์ง ์ด์์ ์์์ ์ฌ์ฉํ๋ค๋ฉด?
Flutter์์ Dart๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํฝ์
์ ์ ์ดํ ์ ์๋ค๋ ์ค๋๋ ์ฃผ์ฅ์ ์ด๋ป์ต๋๊น? ๋์๊ฒ 'svg static'์ ์ง์ํ๋ flutter_svg
ํจํค์ง๋ Dart ๋๋์ ๋ฏธ๋ ํ์ ์ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ผ ํ ๊ธธ์
๋๋ค. Dart๋ฅผ ์ฐํํ๊ณ C++์์ ์ฒ๋ฆฌํ๋๋ก ํ๋ฉด Dart๊ฐ ํดํนํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
Skia๋ SVG๋ฅผ ์ง์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Flutter๊ฐ SVG ์ง์์ ์ง์ ์ ๊ณตํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ด๊ฐ ๋งํ ์ ์๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด Flutter ํ์ Skia ํจํค์ง ํฌ๊ธฐ๋ฅผ ๊ฐ๋ฅํ ํ ์๊ฒ ์ ์งํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. Skia๊ฐ SVG๋ฅผ ์ง์ํ๋์ง ๋ชฐ๋์ง๋ง ์ง์ํ๋ค๋ฉด ๊ทธ๊ฒ์ ๋ฎ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ์ ๋๋ค. ์ฐธ๊ณ ๋ก Skia๊ฐ ์ง์ํ๊ธฐ ๋๋ฌธ์ Flutter์ Lottie ์ง์์ ์ถ๊ฐํ๋ ๋ฐ ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Skia๋ SVG์์ ๊ทธ๋ฆผ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ง์ํ์ง ์์ง๋ง SVG ์์ฑ์ ๋ํ ์คํ์ ์ธ ์ง์์ ์ ๊ณตํฉ๋๋ค(์ฌ๊ธฐ์ ์ ์ฉํ์ง ์์).
์, ํจํค์ง ํฌ๊ธฐ๊ฐ ๋ฌธ์ ์ ๋๋ค.
SVG ์ง์์ ์์ฒญ ํ๋ ค๋ฉด https://github.com/flutter/flutter/issues/15501 ์ ์ฐธ์กฐํ์ญ์์ค.
์ด ๋ฒ๊ทธ๋ ํนํ SVG๋ฅผ ์ง์ํ์ง ์๊ณ ๋ฒกํฐ ๊ทธ๋ํฝ์ ์ง์ํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค.
๋ฒกํฐ ๊ทธ๋ํฝ ํ์์ ๊ด์ฌ์ด ์๋ ์ฌ๋๋ค์ ์ํด ์ฌ์ฉ ์ฌ๋ก๊ฐ ๊ถ๊ธํฉ๋๋ค.
๋๋ ์ง๊ธ๊น์ง ๋ค์๊ณผ ๊ฐ์ ์ฌ์ค์ ์๊ณ ์์ต๋๋ค.
์์ด์ฝ. ๋์ ์ผ๋ก ์์์ ๋ค์ ์ง์ ํด์ผ ํ๋ ์ ์ ์ด๋ฏธ์ง(์: ๋นํ์ฑํ๋ ๊ฒฝ์ฐ ํ์์ผ๋ก ํ์๋จ) ๋ฐ ๋์ ๋ ๋ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค์ํ ์ธ๋ถ ์์ค์ด ํ์ํ ์ ์์ต๋๋ค. ํ ์คํธ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
์ ๋๋ฉ์ด์ ์์ด์ฝ: ์์์ ์ค๋ช ํ ๋ ๊ฐ์ ์์ด์ฝ๊ณผ ํ๋์์ ๋ค๋ฅธ ์์ด์ฝ์ผ๋ก ์ํํ๊ฒ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช ์ ๋๋ค.
๋ฐฐ๊ฒฝ: ํ๋ฉด๋ณด๋ค ํจ์ฌ ๋ ํด ์ ์๋ ์ด๋ฏธ์ง, ์์ฐจ๋ก ํ์๋ ์ ์์ต๋๋ค. ํ ์คํธ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ชจ์, ๊ทธ๋ผ๋์ธํธ ๋ฐ ๊ทธ๋ฆผ์๊ฐ ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ํ ์ฅ๋ฉด.
๋ฒกํฐ ๊ทธ๋ํฝ์ ๋ํ ๋๊ธฐ๋ฅผ ๋ถ์ฌํ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๊น? ์ฌ๊ธฐ์ ์ค๋ช ํ์ญ์์ค. ๊ฐ์ฌ ํด์.
๋จ์ผ ๊ทธ๋ํฝ์ผ๋ก ์ฌ๋ฌ ํด์๋ ์ง์, ํนํ ๊ณ ํด์๋ ํ๋ฉด์ ๋ํ ์์ ํธํ์ฑ
๋ด ์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์์ ๋๋ฐ์์ ๋๋ค. ์ด๋ ๋ฐ ํ๋/์ถ์ ๊ธฐ๋ฅ์ด ์๋ ํธํ ์ง๋๋ฅผ ํฌํจํ๊ณ ์ถ์ต๋๋ค. ๊ณ ํด์๋ ๋์คํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํฌ๊ธฐ์ ์ฑ๋ฅ์์ ์ด์ ๋ก ๋น์ค์ฉ์ ์ ๋๋ค. ๋ฒกํฐ ๊ทธ๋ํฝ์ ์๋ฒฝํฉ๋๋ค.
์ง๊ธ์ ๋งค์ฐ ๋ถํธํ๊ณ ์จ๋ผ์ธ์์๋ง ์๋ํ๋ ํฌํจ๋ PDF ์น ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
Dan์ ๋ง์ ๋ง๋ถ์ด์๋ฉด: 1kB์ ๋ฒกํฐ ์์ค๋ง์ผ๋ก๋ 7์ธ์น ํ๋ธ๋ฆฟ๊ณผ 105์ธ์น 4HD TV ๋ชจ๋์์ ์ธ๋ฐํ๊ณ ๋ถ๋๋ฌ์ด ํ๋ฉด์ ์์ฑํ ์ ์์ต๋๋ค. 10 ๋๋ 14"(์บ์ ๋๋ฉด) ๋ฐ 5 ๋๋ 7"(๊ณ ๊ฐ ๋๋ฉด) ํ๋ฉด์ฉ ๊ธ์ ๋ฑ๋ก๊ธฐ ํค์ค์คํฌ ์ฑ์ ์ต๊ทผ ์ฌ๋ก์ ๋๋ค. ๋ชจ๋ 5000๊ฐ ์ด์์ ๋ฒกํฐ ๋๋ก์ ์ธํธ๋ ํฌ๊ธฐ๊ฐ 5MB ๋ฏธ๋ง์ด์์ต๋๋ค. ์ฌ์ฉ๋ ์ ํํ ๋ ํ๋ฉด์ ๋ํด png๋ก ๋ณํ๋ '์ผ์ฑ' ํ์ ์งํฉ(~150)์ 30MB๋ฅผ ์ด๊ณผํ์ต๋๋ค. ์ ์ฒด ์ธ๋ฒคํ ๋ฆฌ ์ธํธ๋ GBytes ๋ฒ์์์ ๋๋ ์ ์์ต๋๋ค.
PS ๋ค์์ผ๋ก ์ค์ํ ๊ฒ์ ์๋ฅผ ๋ค์ด ์ ํ๋ ์ฑ์ฐ๊ธฐ๋ฅผ ํตํด ์ ์๋ ํฐ์น ์์ญ์ด ์๋ ๋ฒกํฐ ๊ทธ๋ํฝ์ ๊ฐ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ๋๋ถ๋ถ ์ ์ ์ด์ง๋ง ์ธ๋ถ ์ฌํญ์ด ํ๋ถํ ์ธํฐํ์ด์ค์ ์ ์ฒด ํด๋์ค์ ๋ํด ์์ฒ ์ค์ ์ฝ๋๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค.
๋ํ์ ๊ธฐ๊ณ ์๋ ์ค๋ช
์์์์ ๊ฐ์ด.
๊ฟ์ ์ ์ณ๋๊ณ - ์ฐ๋ฆฌ ๋์์ด๋๋ค์ด ๋จผ์ ๊ฐ๋จํ ๋ฒกํฐ ๋๋ก์์ ์ฌ์ฉํ๊ฒ ํ์ธ์ :)
์ง๊ธ๊น์ง ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋งค์ฐ ๋์์ด ๋ฉ๋๋ค.
@ohir "ํ์ , ๊ธฐ์ธ์ด๊ธฐ ๋๋ ๋ น์ด๊ธฐ"์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ด๊ฐ ์ค์ ๋ก ๋งค์ฐ ๋ง์กฑํ๋ ์ด์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ path_parsing
ํจํค์ง(https://pub.dev/packages/path_parsing)๋ฅผ ์ฌ์ฉํ์ฌ SVG ๊ฒฝ๋ก ๋ฌธ์์ด์์ ์บ๋ฒ์ค ๊ทธ๋ฆฌ๊ธฐ ๋ช
๋ น์ ์์ฑํ ๋ค์ ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๋ CustomPainter
์์ ฏ์ ๋ง๋ญ๋๋ค. ๊ฒฝ๋ก(์ง์ฌ๊ฐํ, ์ ๋ฑ) ์ด์ธ์ ๋ค๋ฅธ SVG ๋ชจ์์ ๊ฒฝ์ฐ ์ฝ๊ฐ ์ง๋ฃจํ์ง๋ง ๋๋ฌด ์ด๋ ต์ง ์์ ๊ทธ๋ฆฌ๊ธฐ ๋ช
๋ น์ผ๋ก ์๋์ผ๋ก ๋ณํํฉ๋๋ค.
์ด๊ฒ์ ๊ฐ๋จํ ๋ฒกํฐ ์์ด์ฝ์ ์ ๋ง ์ ์๋ํ๋ฉฐ ์ฑ ์ ์ฒด์์ ํฌ๊ธฐ์ ์์์ด ๋ค๋ฅธ ๋์ผํ ์์ ฏ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://gist.github.com/jpotterm/7b30739e0af722baf97a397d9841d908
SVG ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ ์ฌํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์บ๋ฒ์ค ๊ทธ๋ฆฌ๊ธฐ ๋ช ๋ น์ ์์ฑํ๋ ๊ณต์ ํ๋ฌํฐ ๋ช ๋ น์ค ๋๊ตฌ๊ฐ ์๋ค๋ฉด ์ ๋ง ์ ์ฉํ ์ ์์ต๋๋ค.
@Hixie
์. https://dribbble.com/shots/1083175-Air-conditioning-controller#
์ค์ ํ์ ๋
ธ๋ธ์ ๊ทธ ์ฃผ์์ ๊ฒ์ด์ง๋ ํ์ฌ Canvas API๋ก ์ธ์ฌํ๊ฒ ๊ทธ๋ฆด ์ ์์ง๋ง 2Kb(xml svg)์ ์ฝ 300-500B์ ๋๋ก์ด๋ธ์ ๋ค์ด๊ฐ ์๋ ์์ต๋๋ค. ์ผ๋ถ '๋ฒกํฐ ๊ทธ๋ํฝ' ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋
ธ์ถ๋ Skia ์์ค์ ๋ฒกํฐ ๊ทธ๋ํฝ๊ณผ ๊ธฐ๋ณธ์ ์ธ ์ํ ๋ณํ์ด ์์๋ค๋ฉด ์ด ๋
ธ๋ธ๋ ๊ฒ์ด์ง ์ธ๊ทธ๋จผํธ์ ์ฑ์ฐ๊ธฐ๋ฅผ ์ ์ฉํ๊ณ ํ์๊ธฐ ์์ ์์ ๊ฒฝ๋ก๋ฅผ ํ์ ํ๋ ๊ฒ๋ง์ผ๋ก ์ด์ ์๊ฒ ๋ง๋ค ์ ์์์ต๋๋ค.
๋ ์ค์ํ ๊ฒ์ ์์ ๋ฐ ๊ธฐํ ์ธ๋ถ ์ฌํญ์ด ํฌํจ๋ ์ด ์ ์ฒด ์์ก์ด๊ฐ ๋์์ด๋๊ฐ ๊ณํํ ๋๋ก ์ ํํ๊ฒ ๊ทธ๋ ค์ ธ์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ๋ฒกํฐ ๋๋ก์ + ์ฑ์ฐ๊ธฐ + ๊ทธ๋ผ๋์ธํธ + ์ข์ ๋์์ด๋์ ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://www.artua.com/app-design-deckadance/
๊ฐ๋ฐ์ ์ธก์ Affine ๋ณํ์ ์ด๋ฌํ ๋์์ธ์ ๋ฐ์์ ์ด๊ณ ์๋๊ฐ์๊ฒ ๋ง๋ญ๋๋ค.
์คํ ๋ฐ ์ ๋จ ๋ณํ: ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ์ด ๋ ๋ฒ ์ํํธ๋ฅผ ๋ชจ๋ธ๋งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
(์ด๋ฐ๋๋ฅด ๋ฌ๋ฆฌ์ ์ ๋ น์ ์ํด ์ ๋ฐ๋์์ ๊ฐ๋ฅ์ฑ์ด ์๋ "๋ฉํธ" ๋จ์ด ์ด๋ ;)
/์ฃผ์ ๋ฅผ ๋ฒ์ด/
@jpotterm
SVG ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ ์ฌํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์บ๋ฒ์ค ๊ทธ๋ฆฌ๊ธฐ ๋ช ๋ น์ ์์ฑํ๋ ๊ณต์ ํ๋ฌํฐ ๋ช ๋ น์ค ๋๊ตฌ๊ฐ ์๋ค๋ฉด ์ ๋ง ์ ์ฉํ ์ ์์ต๋๋ค.
๋๋ ๋น์ทํ ๊ฒ์ ์์ฐํ์ต๋๋ค. ์ฃผ์์ ์ฐพ๊ณ ์ง์ ๋ SVG PathData๋ฅผ ์ฌ์ฉํ์ฌ Path ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ getter๋ฅผ ์์ฑํ๋ ์ฝ๋ ์์ฑ๊ธฐ์ ๋๋ค. ์ฌ๋๋ค์ด ์ํ๋ค๋ฉด ๊ทธ๊ฒ์ ์ ๋ฆฌํ๊ณ ์์ค๋ฅผ ๊ณต๊ฐํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๊ธฐ์ฌํ๋ ์ฑ ์ ๋ฒกํฐ ๊ทธ๋ํฝ์ ์๋ฒฝํ๊ฒ ์ ํฉํฉ๋๋ค. UI๋ฅผ ๊ตฌ์ฑํ๋ ์๋ฐฑ ๊ฐ์ ์์ ํ๋ฐฑ ๋ผ์ธ ์ํธ ๊ทธ๋ํฝ์ด ์์ต๋๋ค. ์์์ ์ง์ ํ๊ณ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ ๋ค๋ฅธ ๋ฐ๋์์ ์ฌ๋ฌ ์์์ผ๋ก ์ด ์์ ์ ์ํํ๋ ๊ฒ์ ๋์ฐํ๊ณ ์ง์ ๋ถ๊ฐ๋ฅํ๋ฉฐ ์ต์ข ํจํค์ง๋ฅผ ๊ฑฐ๋ํ๊ฒ ๋ง๋ญ๋๋ค. ์ด ์ด๋ฏธ์ง๋ ์์ผ๋ก ๊ทธ๋ฆฐ โโ๊ทธ๋ํฝ์์ ๊ฐ์ ธ์จ ๊ฒ์ ๋๋ค.
์๊ฒฌ์ ๋ณด๋ด์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋งค์ฐ ๋์์ด ๋๋ ์๊ฒฌ.
๋ฒกํฐ ๊ทธ๋ํฝ ํ์์ ๊ด์ฌ์ด ์๋ ์ฌ๋๋ค์ ์ํด ์ฌ์ฉ ์ฌ๋ก๊ฐ ๊ถ๊ธํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ๊ทธ๋ํฝ์ด ํ์ํ ๋ชจ๋ ๊ฒ์ ๋๋ค.
Skia๊ฐ SVG์ ํ์ ์งํฉ(์ด์จ๋ ์ ์ฉํ ๋ถ๋ถ)์ ์ง์ํ๊ธฐ ๋๋ฌธ์ Flutter๊ฐ ์ด๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ์ฌ์ค์ ์ฌ์ค ๋งค์ฐ ๋๋์ต๋๋ค.
๋๋ ์์ ์ SVG๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๊ณ ํ์ง์ ์ ์ฒด ํ๋ฉด ํ๋ธ๋ฆฟ PNG๋ 2MB ์ด์์ด ๋ ์ ์์ง๋ง ๋๋ฑํ SVG๋ 5-10kb๊ฐ ๋ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ ํ๋ฉด์ ์ถ๊ฐํ๋ฉด ํจํค์ง์ 100kb๊ฐ ์๋ 20mb๊ฐ ํ์๋ฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ ๊ทธ๋ํฝ์ ๊ฒฝ์ฐ ์ ๋ CustomPaint์ ์ด๋ ฌํ ํฌ์ด๋ฏ๋ก ์ฐจํธ, ๋ก๋ ๋ง๋, ๊ทธ๋ฆฌ๊ธฐ ๋ฑ๊ณผ ๊ฐ์ ์์ ์๋ SVG๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค. CustomPaint API์ ๋ํด ์ฐ๋ คํ๋ ์ฌ๋๋ค์๊ฒ๋ ์ ์ ์ ์ผ๋ก HTML Canvas API์ ๋ง์ด ๋น์ทํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์, CustomPaint์์ ์์ฑํ๋ ๊ฒ์ด ๋น์ฉ์ด ๋ง์ด ๋ ๋ค๋ ๋ฐ ๋์ํ์ง๋ง ๊ฒฐ๊ตญ์๋ ๊ฒฌ๊ณ ํ๊ณ ๋งค์ฐ ๋น ๋ฅด๊ณ ์๋ฆ๋ต๊ฒ ๋ ๋๋ง๋ฉ๋๋ค.
SVG๋ฅผ ์ง์ํ๋ ค๋ฉด ๊ทธ๋ผ๋์ธํธ, ํ ๋ฑ๊ณผ ๊ฐ์ ๋ชจ๋ SVG ๊ธฐ๋ฅ์ ์ง์ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ Android ํ๋ก์ ํธ์์ ์ํ๋์ง ์์์ผ๋ฉฐ ๊ฑฐ์ โโ๋ชจ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐ์์๊ฒ ๊ฒฝ๊ณ ํ๋๊ทธ๋ฅผ ํ์ํฉ๋๋ค. ํ๋ซํผ์ SVG ๋ฐ ๋ฒกํฐ๋ฅผ ์ง์ํฉ๋๋ค. ๊ทธ๋ํฝ์ ๊ธฐ๋ณธ, ์ ๋๋ก ํ์ธ์!
@harounhajem ํด๋น ์ฃผ์ ์ ๋ํด์๋ https://github.com/flutter/flutter/issues/15501 ๋ฐ https://github.com/dnfield/flutter_svg ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฐจํธ์ ๋ํ @PierBover ํนํ https://pub.dev/packages/charts_flutter ๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
๋ฐฉ๊ธ Flutter์ ๋ฐ์ด ๋ค์์ต๋๋ค. Ionic 3์์ Ionic 4๋ก ๊ฐ์ธ ์ฑ์ ๋ฆฌํฉํ ๋งํ๊ณ ์์๋๋ฐ (๋ค์) ์์ ํ ๋ค๋ฅด๊ณ ์ฒ์๋ถํฐ ์ฑ์ด ํ์ํ์ต๋๋ค.
๊ทธ๋์ Flutter๋ก ์ด๋ํ์ฌ ์๋ํด ๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ด๊ฐ ๋งํ๋ฏ์ด, ๋๋ ์ด ์ฑ์ ๋๋ด๊ณ ์๋์์ผฐ๊ณ ์ฌ๊ธฐ์๋ ๋ด๊ฐ ๋ด ์ฑ์ ์ค๋นํ ๋ง์ ๊ทธ๋ํฝ๊ณผ ์์ด์ฝ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋๋ ๋์์ด๋๊ฐ ์๋๋ฉฐ ์ด ๋์์ธ์ ๋ํ ๋น์ฉ์ ์ง๋ถํด์ผ ํฉ๋๋ค.
๋๋ ๊ทธ์ SVG ์์ฐ์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ดํ๋ ์ด ์ํฉ์ ๋ํด ๋๋ง์ด ์๋๋ผ๋ ๊ฒ์ ์ดํดํฉ๋๋ค.
@erperezildo - https://pub.dev/packages/flutter_svg ์ฐธ์กฐ
(์ ์ด๊ฒ์ด ๋ซํ์ง ์์๋์ง ํ์คํ์ง ์์)
SVG๊ฐ ์๋ ๋ฒกํฐ ๋๋ก์ด๋ธ ํ์์ ์ง์ํ๋ ์ค์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์๊ธฐ ๋๋ฌธ์?
์ค, ๋ด ์๋ชป @jonahgreenthal. ๋๋ SVG ์ง์์ ์ฐพ์ ์ฌ๊ธฐ์ ์๊ณ ์ธ ๋ฒ์งธ ์ฝ๋ฉํธ๊ฐ ๊ฐ์ ๊ฒ์ ์๊ตฌํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
Uber๋ iOS์ฉ์ผ๋ก ์ด ์์
์ ์ํํ์ต๋๋ค: https://github.com/uber/cyborg
Flutter์์ ์ด์ ์ ์ฌํ ๊ฒ์ ๋ณด๋ ๊ฒ์ ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
@dnfield ๋ svg๋ฅผ ์ ์์ ฏ์ผ๋ก ํ์ํ๋๋ฐ ์ ์๋ํ์ง๋ง AssetImage
์์ฑ์์๋ ์๋ํ์ง ์์ต๋๋ค. CircleAvatar
์์ ฏ์ ์ฌ์ฉํ์ฌ ํ์ํด์ผ ํฉ๋๋ค.
@Hixie ์ฌ์ฉ์๊ฐ ์์ด์ฝ์ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ฏ๋ก svg ์์ด์ฝ์ ์ฌ๋ฌ ์์์ด ํ์ํ ์ฌ์ฉ ์ฌ๋ก๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฃจ์ ์ ํ ๋ง ์์์ ์ฌ์ฉ์ ์ง์ ํ๋ ๊ธฐ๋ฅ๋ ํฌํจ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ํ์ฌ ์ผ๋ถ ์ฌ๋๋ค์ SVG๋ฅผ ๊ธ๊ผด๋ก ๋ณํํ๊ณ ์์ด์ฝ ํจํค์ง์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋๋ก ์ ์ํ์ง๋ง ์ด ๊ฒฝ์ฐ ์์ด์ฝ์ ์ฌ๋ฌ ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
4๋ ๋์ ์ ์ฉํ ์๋ฃจ์ ์์ด ๋ค์ํ ๋๊ธ์ ๋จ๊ฒผ์ต๋๋ค. ๊ฐ๋จํ ๋งํด์ - ์๋์, ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ์๋์, ๊ณํ๋์ง ์์์ต๋๋ค.
์ด๊ฒ์ด ์ ๋ฌธ์ /์ด๋ ค์ด์ง ์ต์ํ ์ ์ ์์ต๋๊น?
Flutter_svg๋ ํ๋ฌํฐ์์ SVG์ ๋ํ ์ ์ ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. Rive๋ Flutter์ฉ ๋ฒกํฐ ๊ธฐ๋ฐ ํ์๋ ์ง์ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์๋ก์ด ๋ฒกํฐ ๊ธฐ๋ฐ ํ์์ ๋ง๋๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค. ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค :)
@dnfield svgs ๋ฅผ ์ ๋ฌํ ์ ์๋ ๋ฐฐ๊ฒฝ ์์ฑ์ด ์๋ ์์ ฏ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ณด๊ดํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ ํ์์ ๋ง๋๋ ๋์ ์ ์ ํ svg ์ง์์ ์ถ๊ฐํ์ญ์์ค. Svg๋ ์ฌ์ค์์ ํ์ค์ ๋๋ค.
๋ด๊ฐ ์ฑ์ ๋ง๋ค ๋๋ง๋ค ์ผ๋ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์น ์ฌ์ดํธ๊ฐ ์๊ณ ์น ์ฌ์ดํธ๋ svg๋ฅผ ์ฌ์ฉํ๋ฉฐ ๋ชจ๋ ํด์๋์์ ๊ฐ๋ณ๊ณ ์๋ฆ๋ค์ด ์๋ฆ๋ค์ด ์ ๋๋ฉ์ด์
svg๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฏธ์ง์ ์ ๋๋ฉ์ด์
์ ๋ค์ ๊ตฌํํ๋ ๋์ ์ผ๊ด์ฑ์ ์ ์ ํ๊ฒ ๋ฌ์ฑํ ์ ์๋๋ก Flutter์์ ์ ๋๋ฉ์ด์
๋ svg๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ง ํฉ๋ฆฌ์ ์
๋๋ค!
SVG๋ ์ด๋ฏธ ์กด์ฌํ๊ณ ์๋ํ๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ๊ณณ์์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์ง์๋ฉ๋๋ค. ๊ทธ๊ฒ์ ์ด์ ์ ๋ง์ถ๋ ๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ ์๋ก์ด ๋ฒกํฐ ๊ธฐ๋ฐ ํ์์ ๋ง๋๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ฃ ? @d-silveira์ ๋์ํฉ๋๋ค. ๋ ๋์ ๋ด์ฅ ์ถ๊ฐ, svg์ ๋ํ ์ ์ ํ ์ง์, ์๋ก์ด ๋ฒกํฐ ๊ธฐ๋ฐ ํ์์ด ํ์ํ์ง ์์ต๋๋ค.
์, ๋ ๋์ ํ ์ ๋ฐ๋ช ํ๋ ๊ฒ์ ๋๋ค. SVG๋ Flutter_svg๋ฅผ ์ฌ์ฉํ์ฌ Flutter์์ ์ด๋ฏธ ์ง์๋ฉ๋๋ค.
๋น๋ ์์ svg๋ฅผ ๊ฐ์ ธ์์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋์ ์ฝ๋๋ฅผ ์๋ ์์ฑํ ์ ์๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๊ธฐ๋ณธ Android์ ์ ์ฌ - svg๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ Android ๊ฒฝ๋ก ์ ์ xml์ ์์ค svg์์ ์์ฑ๋ฉ๋๋ค. Flutter ํ๋ก์ ํธ๋ก ๊ฐ์ ธ์ค๊ธฐ๋ ๋ฒกํฐ ์์ฐ์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฌ์ฉํ ๋คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
@Hixie ๋ ์ํฉ์ ๊ฐ์ ํ๋ ๋ฐ ์ข์ต๋๋ค. ์ด์ ๋ํด์๋ ๋ ผ์ํ์ง ์๊ฒ ์ง๋ง ๊ทธ๋์ svg๊ฐ ์๋ ์ด๋ฏธ์ง๋ง ํ์ฉํ๋ ์ผ๋ถ ์์ ฏ์ ์ด๋ป๊ฒ ์ง์ํ ์ ์์ต๋๊น? (์๋ฅผ ๋ค์ด ๋ฐฐ๊ฒฝ ์์ฑ์ด ์๋ ๊ฒ๋ค)
๊ทธ๊ฒ์ flutter_svg์ ๋ํ ๊ธฐ๋ฅ ์์ฒญ์ด ๋ ๊ฒ์ ๋๋ค.
@Hixie Flutter SVG๋ ๊ฑฐ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์์ง๋ง ํ๋ ์์ํฌ๊ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ณด๋ค ์ฌ์ง ์ดฌ์์ ๋ ๊ด๋ํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ ์ถ https://github.com/flutter/flutter/issues/49712
flutter_svg
์ ๊ทธ๋ฐ ๊ฒ๋๊น? ์ด๊ฒ์ flutter_svg
ํจํค์ง์ ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค.
CircleAvatar(
backgroundImage: MySVGImage(),
)
@Hixie flutter_svg๋ ์ผ๋ถ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ์ค์ฉ์ ์ธ ์๋ฅผ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ผ๋ถ ๋์ ์์ ์ด๋ฏธ์ง URL์ ๋ฐํํ๋ REST API๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ฏธ์ง๋ ๋ฐฑ์คํผ์ค์์ ์ฌ์ฉ์๊ฐ ์์ฑํ๋ฏ๋ก ์ผ๋ถ๋ png, ์ผ๋ถ๋ jpg, ์ผ๋ถ๋ svg์
๋๋ค. ๋ฐฑ์คํผ์ค๋ URL์ ํ์ผ ํ์ฅ์๋ฅผ ํฌํจํ์ง ์๊ณ HEAD๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ฏธ๋ฆฌ ์ด๋ฏธ์ง ์ ํ์ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํ๋ฌํฐ์ ์์๋๋ ๋์์ ์ด๋ฏธ์ง ์ ํ์ ์ถ์ธกํ๊ธฐ ์ํด ๊ฐ์ ๋ก ์ ํํ๋ ๋์ image.network์์ URL์ ์์ ํ๊ณ ์ฒ๋ฆฌํ๋ ๊ฒ์
๋๋ค. svg์ธ ๊ฒฝ์ฐ flutter_svg๋ก ์ ํํฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๋ชจ๋ ๊ฒฝ์ฐ์ flutter_svg๊ฐ ์ด๋ฏธ์ง์ ๋ํ ๋๋กญ์ธ ๋์ฒด๊ฐ ์๋๋ผ๋ ์ฌ์ค์กฐ์ฐจ ๊ณ ๋ คํ์ง ์์ต๋๋ค! :ํผ
SVG๋ ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์์๋ง ์๋ํฉ๋๋ค. :-)
์ด ํน์ ๋ฌธ์ ๋ SVG๊ฐ ์๋ ๋ฒกํฐ ๊ทธ๋ํฝ ํ์์ ๊ฐ๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ์๊ตฌ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ฌธ์ ๋ก ์ ์ถํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด์ ๋ ผ์์์ ๋ช ๊ฐ์ง ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฐ๋ฆฌ๋ ์์ ํ SVG ์ง์์ ์ํ์ง ์์ต๋๋ค. ์ฌ์์ ๋๋ฌด ๋น์ธ๊ณ , ๋ฌด๊ฒ๊ฑฐ๋, Flutter์ ์ด๋ฏธ ์๋ ๊ฒ๊ณผ ์ค๋ณต๋ฉ๋๋ค.
- ์ง์๋๋ ํ์์์ ์ด๋ฌํ ์์ ์ ๊ทธ๋ํฝ ์์ง(Skia)์์ ํจ๊ณผ์ ์ด๊ณ ํจ์จ์ ์ด๋ฉฐ ์ต์ ํ๋์ด ์์์ ๊ฐ์กฐํด์ผ ํฉ๋๋ค.
- ์ ์ฒด ๋ฐํ์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ง์ํ๊ธฐ๋ณด๋ค๋ ๋น๋ ์ ํ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋๊ตฐ๊ฐ๊ฐ ํ๋ฌํฐ์ ์ต์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ์ํ ์๋ก์ด ๋ฒกํฐ ํ์์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น์? ์์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ ์ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค ...
Rive์ ์๋ ์ฌ๋๋ค์ด SVG ๋ณํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ์ด๋ฏธ Flutter๋ฅผ ์ํ ๋ ์ (๊ทธ๋ฆฌ๊ณ ์คํ ์์ค) ๋ฒกํฐ ์์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. @luigi-rosso
Flutter ํ๋ก์ ํธ์ svg ๊ฐ์ ธ์ค๊ธฐ ์ง์์ ์ถ๊ฐํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ฆฌ๊ณ ๋คํธ ์ฝ๋/์๋ก์ด ๋ฒกํฐ ๋๋ก์ด๋ธ ๋ฑ์ผ๋ก ๋ณํํฉ๋๋ค. ๋ค์ดํฐ๋ธ Android์์๋ ๋์ผํ ์ํฉ์ด ๋ฐ์ํ๋ฏ๋ก svg๋ฅผ ์ง์ ์ฌ์ฉํ์ง ์๊ณ (์ด๋ ๊ทธ๋ค์ง ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค) ๋์ ํ๋ก์ ํธ๋ก ๊ฐ์ ธ์ต๋๋ค. svg๋ ๋ค์์์ ์ ๊ฑฐ๋ฉ๋๋ค. ์ง์๋์ง ์๊ณ ๊ธฐ๋ฅ์ด ํ์ํ์ง ์์ผ๋ฉฐ Android ๊ฒฝ๋ก ์ ์๋ก ๋ณํ๋ฉ๋๋ค.
Flutter๋ฅผ ์ํ ์ข์ ์์ด๋์ด๊ฐ ์๋๋๊น?
@giaur500 ์ด ๋ฌธ์ ๋ ๊ทธ๊ฒ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. SVG์ ๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ํ ์ฌํญ์ด ์์ผ๋ฉด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ ์ถํด ์ฃผ์ญ์์ค.
๊ณต์ ํ๊ฒ ๋งํ์๋ฉด, ์ด ํธ์ ๋ง์ ์๊ฒฌ์ SVG์ Flutter์ ๋ํด ๋ ผ์ํ๊ณ ์์ต๋๋ค.
SVG๋ ํ๋ฅญํ ํฝ์ ์์ค์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ ํฉํฉ๋๋ค. ์ง๊ธ๊น์ง ํ๋ฅญํ ํฝ์ ์ ๋ํด ์ต๊ณ ์ ๋๋ค.
@lukepighetti ๋ค. ๋ถํํ๋ ๊ทธ๊ฒ๋ค์ ๋ชจ๋ ์ฃผ์ ์์ ๋ฒ์ด๋ฌ๊ณ ์ฌ๊ธฐ์ ๊ทธ๊ฒ๋ค์ ๊ฐ์ง๊ณ ์๋ค๊ณ ํด์ Flutter๊ฐ ๊ฐ์ ๋์ง๋ ์์ต๋๋ค.
์ด์ ๋ ผ์์์ ๋ช ๊ฐ์ง ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฐ๋ฆฌ๋ ์์ ํ SVG ์ง์์ ์ํ์ง ์์ต๋๋ค. ์ฌ์์ ๋๋ฌด ๋น์ธ๊ณ , ๋ฌด๊ฒ๊ฑฐ๋, Flutter์ ์ด๋ฏธ ์๋ ๊ฒ๊ณผ ์ค๋ณต๋ฉ๋๋ค.
- ์ง์๋๋ ํ์์์ ์ด๋ฌํ ์์ ์ ๊ทธ๋ํฝ ์์ง(Skia)์์ ํจ๊ณผ์ ์ด๊ณ ํจ์จ์ ์ด๋ฉฐ ์ต์ ํ๋์ด ์์์ ๊ฐ์กฐํด์ผ ํฉ๋๋ค.
- ์ ์ฒด ๋ฐํ์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ง์ํ๊ธฐ๋ณด๋ค๋ ๋น๋ ์ ํ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋น๋ ์๊ฐ ๋๊ตฌ๋ ํ๋ฅญํ ๊ฒ์ ๋๋ค. ๋ฒกํฐ๋ฅผ ๊ฐ์ ธ์ ๋ชจ๋ ํ๋ฉด ๋ฐ๋๋ฅผ ๋ ๋๋งํ๊ณ ์์ฐ์ ์ด๋ฏธ์ง๋ก ์ถ๊ฐํฉ๋๋ค. Apple iOS๋ PDF ์์ด์ฝ์ ์ฌ์ฉํ์ฌ ์ด ์์ ์ ์ํํฉ๋๋ค.
๋น๋ ์์ svg๋ฅผ ๊ฐ์ ธ์์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋์ ์ฝ๋๋ฅผ ์๋ ์์ฑํ ์ ์๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๊ธฐ๋ณธ Android์ ์ ์ฌ - svg๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ Android ๊ฒฝ๋ก ์ ์ xml์ ์์ค svg์์ ์์ฑ๋ฉ๋๋ค. Flutter ํ๋ก์ ํธ๋ก ๊ฐ์ ธ์ค๊ธฐ๋ ๋ฒกํฐ ์์ฐ์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฌ์ฉํ ๋คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ข์์
@giaur500 ์ด ๋ฌธ์ ๋ ๊ทธ๊ฒ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. SVG์ ๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ํ ์ฌํญ์ด ์์ผ๋ฉด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ ์ถํด ์ฃผ์ญ์์ค.
์๋ก์ด ๋ฌธ์ ๊ฐ ์์ฑ๋์์ต๋๋ค: https://github.com/flutter/flutter/issues/63752
์ด ์ํ๋ ๋ฌด์์
๋๊น?
VectorDrawable๊ณผ ์ ์ฌํ ๊ฒ์ ์ง์ํ๊ฑฐ๋ Android์ ๊ฒฝ์ฐ VectorDrawable ์์ฒด๋ฅผ ์ง์ํ๋ ค๋ ์๋๊ฐ ์ ํ ์์ต๋๊น?
์ํ๊ณ ๋์ ์ ๊ณ ๋ คํ๊ณ ์๋ ๊ฐ๋ฐ์๋ก์ ์ด๊ฒ์ด ์ ๊ฐ ๋ค์ดํฐ๋ธ๋ก ๋จ์ ์ ์๋๋ก ์ค๋ํ ์ ์๋ ๊ฐ์ ์ด๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ง์ ์๋ํ ์ ์ด ์์ง๋ง flutter svg lib๋ at
๊ฒฝ๋ก์ ๊ฐ์ ๋ฒกํฐ ๋๋ก์ด๋ธ์ ์ต์ ํต์ฌ ๊ธฐ๋ฅ.
2020๋ 8์ 15์ผ(ํ ) 19:46 n00bmind, [email protected] ์ด(๊ฐ) ์์ฑํ์ต๋๋ค.
์ด ์ํ๋ ๋ฌด์์ ๋๊น?
๋น์ทํ ๊ฒ์ ์ง์ํ๋ ค๋ ์๋๊ฐ ์ ํ ์์ต๋๊น?
VectorDrawable ๋๋ Android์ฉ VectorDrawable ์์ฒด?์ํ๊ณ ๋์ ์ ๊ณ ๋ คํ๋ ๊ฐ๋ฐ์๋ก์ ์ ๋ ์ด๊ฒ์ด
๋ด๊ฐ ์์ด๋ฏผ์ผ๋ก ๋จ๋๋ก ์ค๋ํ๋ ๊ฐ์ ..โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/flutter/flutter/issues/1831#issuecomment-674375846 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ABI4Y4LWYSYEIWI3RRSSCK3SAZKO5ANCNFSM4B3FXMMQ
.
์ํ๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒ ๊ฐ์์. ์ด ์ค๋ ๋์๋ ๊ฒฐ๋ก ์ด ์์ผ๋ฉฐ ๋ค์ดํฐ๋ธ ๋ฒกํฐ ๋๋ก์ด๋ธ๊ณผ ์ ์ฌํ ๊ฒ์ ๊ฐ๋ฐํ๋ ค๋ ๋ด ์์ด๋์ด๋ ์ฆ์ ๋ซํ๋๋ค.
flutter svg ํจํค์ง๊ฐ ์๋ํ์ง ์๋ ์ด์ ๊ฐ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ ์ฑ ์ค ํ๋๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Vector Drawable์ ์ฌ์ฉํ ์ ์ด ์์ผ๋ฏ๋ก SVG์ ์ด๋ป๊ฒ ๋น๊ต๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
flutter_svg ํจํค์ง๋ ์ด๋ฐ ์ข
๋ฅ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณผ ๊ฐ์น๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@lukepighetti ์ฑ๋ฅ์ ์ด๋ป๊ฒ ํ๊ฐํ์๊ฒ ์ต๋๊น? ๋ด ์ฌ์ฉ๋ฒ์ ์ฑ์ ์ฌ๊ธฐ์ ๊ธฐ์ ์คํ๋์ ์ด๋ฏธ์ง์ ๋ช ๊ฐ์ง ์์ด์ฝ ํฌ๊ธฐ์ ๊ทธ๋ํฝ์ด ๋ ๊ฒ์ด๋ฏ๋ก ๋ฉ์ง ๊ฒ์ ์์ต๋๋ค.
flutter_svg ํจํค์ง๋ ์ด๋ฐ ์ข ๋ฅ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณผ ๊ฐ์น๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@lukepighetti ์ฑ๋ฅ์ ์ด๋ป๊ฒ ํ๊ฐํ์๊ฒ ์ต๋๊น? ๋ด ์ฌ์ฉ๋ฒ์ ์ฑ์ ์ฌ๊ธฐ์ ๊ธฐ์ ์คํ๋์ ์ด๋ฏธ์ง์ ๋ช ๊ฐ์ง ์์ด์ฝ ํฌ๊ธฐ์ ๊ทธ๋ํฝ์ด ๋ ๊ฒ์ด๋ฏ๋ก ๋ฉ์ง ๊ฒ์ ์์ต๋๋ค.
๋๋ ๋น์ ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๊ทธ๊ฒ์ ๋งค์ฐ ๋๊ฒ ํ๊ฐํ ๊ฒ์ ๋๋ค. ์ฌ๋๋ค์ด ๋ด๋ถ์ ์ผ๋ก ๋ญ๊ฐ๋ฅผ ํ๋๋ก ํ๋ฌํฐ ํ์ ์๋ ฅ์ ๊ฐํ๊ธฐ ์ ์ ์ค์ ๋ก ์๋ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@lukepighetti
๋ด๋ถ์ ์ผ๋ก ๋ญ๊ฐ๋ฅผ ํ๋๋ก ํ๋ฌํฐ ํ์ ์๋ ฅ์ ๊ฐํ๊ธฐ ์ ์.
์ด ํน์ ๋ฌธ์ ์ ์ง์ง ๋ฌธ์ ๋ Skia ํ๋ฌํฐ ๊ทธ๋ํฝ ์์ง์ด ์์ง์ ํธ์ถํ์ฌ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ๋จ๊ณ๋ณ๋ก ๊ทธ๋ฆฌ๋ ์๋นํ ๋ฌด๊ฑฐ์ด ๋คํธ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ณ ์ต๊ณ ์๋๋ก ์คํ๋๋ "๋๋ก์ด๋ธ ๊ฐ์" ๋ฒกํฐ ํ์์ ๋ง๋๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๊ฐ์ถ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ๋๋ค์ด ์ ๋ง _(svg package)_ ์๋ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ฌ๋๋ค์ด ๊ฐ๋ฅํ ๋ชจ๋ ๊ณณ์์ ํฐ ์๋ฆฌ๋ก ๊ตฌ๊ธ ์ง์๋ค์๊ฒ ์ด gh-issue์ ์ ํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด 4๋ ์ด ์ง๋ ์ง๊ธ์ ๋ถ์ ์ ์ธ PR๋ง์ด 2020๋ ์ ๋ชจ๋ฐ์ผ ํ๋ ์์ํฌ๊ฐ ์ ๋ง๋ก ์ฐ๋ฆฌ์๊ฒ ํด๋์ ํ๋ฅผ ํด๋ํ๋๋ก ๊ฐ์ํด์ผ ํ๋์ง์ ๋ํด ์๊ฐํ๊ธฐ ์ํด Google์์ ๋๊ตฐ๊ฐ๋ฅผ ๊ฑท์ด์ฐจ๊ฒ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ ์ฑ์ ์๋ ๊ทธ ๋ชจ๋ ๋ฉ๊ฐ๋ฐ์ดํธ์ ๋์คํฐ ๊ทธ๋ํฝ.
[@ํ์]
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ง ์๋ ํ, ์ด๋ฌํ ํ๋ฌํฐ ๊ธฐ๋ฅ์ ๋ํ ๊ตฌํ์ ์ค๋ช ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ @dnfield ์ flutter_svg ํจํค์ง์ ๋งค์ฐ ์ ์ฌํ ๊ฒ์ ๋๋ค. ๋ํ ์ ์ง ๊ด๋ฆฌ์๋ ํต์ฌ Flutter ํ์ ์์ผ๋ฏ๋ก ํ์ง์ ํ์ ํ ์ ์์ต๋๋ค. ์ด ํจํค์ง๊ฐ https://github.com/flutter/plugins ์ ์์ผ๋ฉด ๊ธฐ๋ถ์ด ๋ ๋์์ง๊น์?
์ ๊ฐ ๋์น๊ณ ์๋ ๊ฒ์ด ์๋ค๋ฉด ์ด ์ฃผ์ ์ ๋ํด ๋ ๋ง์ด ๋ฐฐ์ธ ์ ์๋๋ก ์ ๋ฅผ ๊ต์กํด ์ฃผ์ญ์์ค.
@lukepighetti
๋ฌธ์ ์ ๋ชฉ์ "SVG ์๋"์ ๋นจ๊ฐ์์ผ๋ก ๊ตต๊ฒ ํ์๋๋ฉฐ ๊น๋ฐ์ฌ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ํนํ svg ํ์์ ๊ดํ ๊ฒ์ด ์๋๋๋ค .
OP(๊ทธ๋ฆฌ๊ณ ๋)๋ Skia์ ๊ฒฝ๋ก API๋ฅผ ๋ ธ์ถํ์ฌ ์์ฐ ๊ทธ๋ํฝ์ด ๊ณ ์ ์๋์์ ์ด์ง ํ์์ผ๋ก ํํ๋ ์ ์๊ธฐ๋ฅผ ํฌ๋งํ์ต๋๋ค. Dan์ ์ฌ์ง์ด svg ์์ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ flutter_svg์์ ์๋ ํ๋ Skia์ ๋ํ ํจ์น๋ฅผ ์ํํ์ต๋๋ค. ์ฌ์ ํ ์ฐ๋ฆฌ๋ ์ฑ ๋ฐํ์์ xml์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์์ง์ ํธ์ถํ์ฌ ๊ทธ๋ฆฝ๋๋ค. ๋ํ apk์ ๋ฒ๋ค๋ก ์ ๊ณต๋๋ ์ ์ ์์ฐ์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ฌ์ฉ์ ์ ์ ๋ฒกํฐ ๋๋ก์ด๋ธ ํ์ (์ด๋ฆ์ fvd ๋ก ์ง์ )์ ๋ํ ์ ์ ํ ์ง์์ผ๋ก ๋์์ด๋ ์์ ์ ๊ตฌ๋ฌธ ๋ถ์์ด ํ ๋ฒ ๋ฐ์ํฉ๋๋ค. ์ฑ ๋น๋ ์ fvd ํ์์ ๊ฐ์ฒด๊ฐ Skia์ ์ง์ throw๋ฉ๋๋ค. ๊ทธ๋ํฝ์ด ๋ง์ ์ฑ์์ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฑ ํฌ๊ธฐ์ ๋ง๋ํ ์ํฅ์ ๋ฏธ์น๊ณ ๋ ๋๋ง ์๊ฐ์ ๋์ ๋๊ฒ ์ ์ฝํ ์ ์์ต๋๋ค. [ ์๊ธฐ์๊ฐ ]
์์ ๋ด์ฉ์ด ๋ด๊ฐ ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ๋ณด๋์ง ๋ณด์ฌ์ฃผ๊ณ ๋ง์นจ๋ด ํด๊ฒฐํ๋๋ก ๋ถ๋ฆ์ ์ ๋นํํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
flutter_svg ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ๋ถ๋ก๋.
Flutter๋ ๊ฒฝ์ ๊ธฐ์ ์ ๋นํด ๋ ๋ค๋ฅธ ์ด์ ์ ๊ฐ์ง ์๊ฒฉ์ด ์์ต๋๋ค.
๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ flutter_svg๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ณธ์ง์ ์ผ๋ก ์๋ชป๋ ๊ฒ์ ์์ต๋๋ค. ๋จ์ง ๋ช ๊ฐ์ง ์์ฃผ ๊ฐ๋จํ ๊ฒ์กฐ์ฐจ ๋ถ์กฑํ๋ค๋ ๊ฒ๋ฟ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐฑ๋ถ์จ์ ์ง์ํ์ง ์๊ณ ๋ ๋๋ง์ ์๋ํ ๋ ๋ฐ๋ก ์ถฉ๋์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๋๊ธ์ flutter_svg ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ ธํฌ๊ฐ ์๋๋ผ ๊ทธ๋ฅ flutter_svg๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋งํ๋ ์ฌ๋๋ค์๊ฒ ์ค๋ช ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
flutter_svg๋ ์คํฌ๋ฆฝํ , HTML, SMIL ๋ฑ์ ์ง์ํ์ง ์์์๋ ๋ถ๊ตฌํ๊ณ ๋งค์ฐ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ณด๊ธฐ์ ์ข๊ณ ํ์ผ ์์ฐ, ๋คํธ์ํฌ ๋๋ ์ผ๋ฐ ๋ฌธ์์ด์์ SVG๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋๋ฅผ ์ง์ํ๋ ์ฑ ํ๋ ์์ํฌ์์๋ ๋ฒกํฐ ์ง์์ด ์ค์ํด ๋ณด์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ด์ฝ์ด ์๊น๋๋ค.
๋์ :