๐ [๋ฌธ์] Flutter์ ์ธ ๊ฐ์ง ํธ๋ฆฌ(Widget, Element, RenderObject) ๊ฐ๋ #22
Cassiiopeia
started this conversation in
Documents
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
๐ ๊ธฐ๋ณธ ๊ฐ๋
Flutter์ Dart๋ฅผ ์ฒ์ ์ ํ๋ ์ํฉ์์, React์ Spring ๊ฐ๋ฐ ๊ฒฝํ์ด ์์ผ์๋ค๋ฉด Flutter์ ์ธ ๊ฐ์ง ํธ๋ฆฌ(Widget, Element, RenderObject) ๊ฐ๋ ์ React์ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ๋น๊ตํ๋ฉฐ ์ดํดํ๋ฉด ๋์์ด ๋ ๊ฑฐ์์. Flutter๋ ์ ์ธํ UI ํ๋ ์์ํฌ๋ก, React์ ๋น์ทํ๊ฒ โ๋ชจ๋ ๊ฒ ์์ ฏโ์ด๋ผ๋ ์ฒ ํ์ ๋ฐ๋ฆ ๋๋ค. ๋ค๋ง, ๋ด๋ถ์ ์ผ๋ก๋ Flutter๋ง์ ๋ ํนํ ๋ ๋๋ง ๊ตฌ์กฐ๊ฐ ์๋ค
๊ทธ๋ ๋ค๊ณ ํฉ๋๋ค??
์ค์ฌ ํ๋ฒ ์ข ๋ณด๋๋กํ ๊ป์
๐ฏ ๋ณธ๋ฌธ
Widget ํธ๋ฆฌ vs. React ์ปดํฌ๋ํธ
Widget (Flutter):
React์ JSX ์ปดํฌ๋ํธ์ ์ ์ฌํฉ๋๋ค.
์ ์ธ์ ์ด๋ฉฐ, ๋ถ๋ณ(immutable)์ ๋๋ค.
UI์ โ์ค๊ณ๋โ๋ก, ์ด๋ค ์์๋ค์ด ์์ด์ผ ํ๋์ง ๊ธฐ์ ํฉ๋๋ค.
React ์ปดํฌ๋ํธ:
์ํ(state)์ props๋ฅผ ๋ฐ์ UI๋ฅผ ๋ฐํํ๋ ํจ์๋ ํด๋์ค ์ปดํฌ๋ํธ์ ๋๋ค.
Virtual DOM์ ์ฌ์ฉํด ๋ณ๊ฒฝ ์ฌํญ์ ์ต์๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
Element ํธ๋ฆฌ
Element (Flutter):
Widget๊ณผ RenderObject ์ฌ์ด์ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
React์ ๋ด๋ถ ์ธ์คํด์ค(์ปดํฌ๋ํธ ์ธ์คํด์ค)์ ํด๋นํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ํ ๊ด๋ฆฌ(StatefulWidget์ ๊ฒฝ์ฐ)๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฉฐ, Widget์ ๋ถ๋ณ์ฑ์ ๋ณด์ํฉ๋๋ค.
RenderObject ํธ๋ฆฌ
RenderObject (Flutter):
์ค์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ญํ ์ ํฉ๋๋ค.
๋ ์ด์์, ํ์ธํ , hit-testing ๋ฑ์ ๋ด๋นํฉ๋๋ค.
React์์๋ ๋ธ๋ผ์ฐ์ ์ DOM์ด ์ค์ ๋ก ๋ ๋๋ง๋๋ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
ํต์ฌ ํฌ์ธํธ:
Flutter๋ Widget(์ค๊ณ๋) โ Element(์ฐ๊ฒฐ ๋ฐ ์ํ ๊ด๋ฆฌ) โ RenderObject(์ค์ ๊ทธ๋ฆฌ๊ธฐ) ์์ผ๋ก ๋์ํฉ๋๋ค. React๋ Virtual DOM์์ ์ค์ DOM์ผ๋ก์ ์ ๋ฐ์ดํธ ๋ฐฉ์๊ณผ ์ ์ฌํ์ง๋ง, Flutter๋ ์ด ์ธ ๋จ๊ณ๋ฅผ ๋ถ๋ฆฌํด ๋ ์ธ๋ฐํ ์ ์ด์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
React์์ Virual DOM์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ด ์๋๋ผ
3๊ฐ๋ก ๋๋๋๋ณด๊ตฐ์... ํ ...
์๋ ์ฝ๋๋ Flutter์ StatelessWidget๊ณผ StatefulWidget์ ์ฌ์ฉํ ๊ฐ๋จํ ์นด์ดํฐ ์ฑ ์์ ์ ๋๋ค. React์ ํจ์ํ ์ปดํฌ๋ํธ์ useState ํ ์ ์๊ฐํ๋ฉด ๋น์ทํ ๊ฐ๋ ์ ๋๋ค.
๋ผ๊ณ ํฉ๋๋ค
์ผ๋จ ์ด๊ฒ๋ง ๋ณด๊ณ ๋๋์ ์
child ๊ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๊ณ children์ด ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๊ณ
๋ฆฌ์กํธ๋ state ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ฆฌ๋๋๋ง์ด ์ผ์ด๋๋๋ฐ
flutter๋ ๋น์ทํ.... ์ด... Widget build??? ์ด ํจ์๊ฐ ํธ์ถ๋ ๋ ๋ฆฌ๋๋๋ง์ด ์ผ์ด๋๋ค๊ณ ํ๋ค์?
ํ๋ฒ ๋ ๋ฌผ์ด๋ด ์๋ค ์ ํํ ๊ฐ๋ ์
์์งํ ์ด๊ฒ๋ด๋ ๋ญ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค
๋ญ๊ฐ ๋ฆฌ์กํธ๋ณด๋ค๋ ๊ฐ์ฒด๊ฐ๋ ์ด ๋ ๋ค์ด๊ฐ๋ค๊ณ ์๊ฐํ ๊ป์
์ ๊ฐ์ฒด์งํฅ์ ์ธ๊ฑฐ ์ข์ํด์ ๋ง์๋๋๊ตฐ์
๋จ์ผ ์์ ฏ ์ง์ :
child๋ ๋จ ํ๋์ ์์ ์์ ฏ์ ๋ฐ์ ๋ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, Center ์์ ฏ์ ํ๋์ ์์ ์์ ฏ์ ์ค์์ ๋ฐฐ์นํฉ๋๋ค.
๋น๊ต:
React์์
์ํ ๊ทธ๋ฅ div๊ตฐ์?
children
์ฌ๋ฌ ์์ ฏ ์ง์ :
children์ ์ฌ๋ฌ ๊ฐ์ ์์ ์์ ฏ์ ๋ฆฌ์คํธ ํํ๋ก ๋ฐ์ ๋ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, Column์ด๋ Row ์์ ฏ์ ์ฌ๋ฌ ์์ ฏ์ ์ธ๋ก ํน์ ๊ฐ๋ก๋ก ๋์ดํฉ๋๋ค.
๋น๊ต:
React์์ ์ฌ๋ฌ ์์์ ๋ฐฐ์ด๋ก ๊ตฌ์ฑํ์ฌ ๋ ๋๋งํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค.
์ํ... ๊ทธ๋ฅ ์์ ์ฌ๋ฌ๊ฐ ์ ์ธํ๋ฉด ์์ Children ํ๋ฉด ๋๋ค์?
Build ๋ฉ์๋์ ์ญํ
UI ์ ์ธ:
build(BuildContext context) ๋ฉ์๋๋ ์์ ฏ์ด ์์ ์ UI๋ฅผ ์ด๋ป๊ฒ ํํํ ์ง ์ ์ธํ๋ ์ญํ ์ ํฉ๋๋ค.
์ด ํจ์๋ React์ render ํจ์์ ์ ์ฌํ๊ฒ, ์์ ฏ(๋๋ ์ปดํฌ๋ํธ)์ด ํ๋ฉด์ ์ด๋ค ํํ๋ก ๋ณด์ผ์ง ์ ์ํฉ๋๋ค.
์ํ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ํธ์ถ:
StatefulWidget์ ๊ฒฝ์ฐ, setState()๊ฐ ํธ์ถ๋๋ฉด Flutter๋ ํด๋น ์์ ฏ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์์์ ๊ฐ์งํ๊ณ build ๋ฉ์๋๋ฅผ ๋ค์ ํธ์ถํฉ๋๋ค.
์ด๋ React์์ state๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค.
child vs. children:
child๋ ๋จ์ผ ์์์ ๋ฐ์.
children์ ์ฌ๋ฌ ์์์ ๋ฆฌ์คํธ ํํ๋ก ๋ฐ์.
Build ๋ฉ์๋์ ๋ฆฌ๋ ๋๋ง:
build() ๋ฉ์๋๋ ์์ ฏ์ UI๋ฅผ ์ ์ธ์ ์ผ๋ก ์ ์ํ๋ ํจ์์ ๋๋ค.
setState() ํธ์ถ ์ ์ํ ๋ณ๊ฒฝ์ ๊ฐ์งํ์ฌ build() ๋ฉ์๋๊ฐ ๋ค์ ์คํ๋๊ณ , ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ๋์ด ํ๋ฉด์ด ๊ฐฑ์ ๋ฉ๋๋ค.
ํ ~~~
์ผ๋จ ์๊ฒ ์ต๋๋ค... ์ฐจ์ฐจ ์ ํฌ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ๋ ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค
๐ ๊ธฐ๋ํจ๊ณผ
No response
๐ ๊ด๋ จ ์๋ฃ
No response
๐โ ๋ด๋น์
๋ ์ค์ํ ๊ฟํ์๋ค๋ฉด ์ ์๋ถํ๋๋ ค์
All reactions