MediaQuery์ ๋ํด
ํ๋ฌํฐ์์๋ MediaQuery๋ผ๋ ํด๋์ค๊ฐ ์กด์ฌํ๋ค.
MediaQuery๋ ์ฑ์ด ์คํ ์ค์ธ ์ฅ์น์ ํ๋ฉด์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉํ๋ฉฐ ํ๋ฉด์ ์ฌ์ด์ฆ๋ฅผ ํฌํจํ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๊ณ ์๋ค.
Flutter์์ ๋ฐ์ํ UI๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์์ด์๋ ์ ๋ ์กด์ฌ์ด๋ฉฐ, ์ด๋ฅผ ์ด์ฉํด ๋ค์ํ UI ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ฐ ๋์์ ์ค ์ ์๋ค.
MediaQuery ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค
MediaQuery๋ฅผ ์ฌ์ฉํ ๋๋ MediaQuery.of(context).[property] ๋ฅผ ์ด์ฉํด ์ํ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์๋ค.
ํ์ฌ 3.24.0 ๊ธฐ์ค์ผ๋ก MediaQuery์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ๋ค.
- size
- withNoTextScaling
- withClampedTextScaling
- viewPadding
- viewInsets
- systemGestureInsets
- supportsShowingSystemContextMenu
- plaformBrightness
- padding
- orientation
- onOffSwichLabels
- accessibleNavigation
- navigationMode
- invertColors
- highContrast
- gestureSettings
- displayFeatures
- disableAnimations
- devicePixelRatioOf
- boldText
- alwaysUse24HourFormat
- textScaler
๊ฑฐ์ 20๊ฐ๊ฐ ๋์ด๊ฐ๋ ์ด๋ง๋ฌด์ํ ์์ด๋ค.
๋ง์ ๋ถ๋ค๋ ๊ทธ๋ ๊ฒ ์ง๋ง ์ฌ๊ธฐ์ ์ฃผ๋ก ๋ด๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ํ๋กํผํฐ๋ size์ orientation์ด๋ค.
๋ฌด์์ด ๋ฌธ์ ์ผ๊น?
MediaQuery.of(context)๋ ์์ ์๊ธฐํ ๊ฒ์ฒ๋ผ 20์ฌ ๊ฐ๊ฐ ๋์ด๊ฐ๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ ์ ๊ณตํด ์ฃผ๋๋ก ๋์์ฃผ๊ณ ์๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ง์ฝ ํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ์์๋ด๊ณ ์ถ์ ๋ MediaQuery.of(context).size๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ๋ง์ฝ size๊ฐ ๋ฐ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ํด๋น ์์ ฏ์ rebuild๋ฅผ ํ์ฌ ์๋ก์ด ๊ฐ์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ค.
ํ์ง๋ง MediaQuery.of(context)๋ size๋ง์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์์ ๋ rebuild ๋๋ ๊ฒ์ด ์๋๋ผ MediaQuery์์ ์ ๊ณตํ๋ 20์ฌ ๊ฐ์ ํ๋กํผํฐ ์ค ํ๋๋ผ๋ ๋ณ๊ฒฝ๋ ๋ rebuild๋ฅผ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๊ฐ๋จํ ์๋์ ์์ ๋ฅผ ํตํด ํ์ธํด ๋ณด๋๋ก ํ๊ฒ ๋ค.
ํด๋น ์ฝ๋์์๋ orientation ์ฆ ํ๋ฉด์ ๋ฐฉํฅ์ด ๋ฐ๋์์ ๋ called build๋ผ๋ ๊ธ์๋ฅผ ํ์ํ๋๋ก ํด๋๋ค.
๋ง์ฝ ํ๋ฉด์ ๋ฐฉํฅ์ด ๋ฐ๋๊ฒ ๋๋ฉด rebuild๊ฐ ๋๋ ๊ตฌ์กฐ๊ฐ ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ด๊ฐ ์ฌ๊ธฐ์ ํ๋ฉด์ ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝํด ๋ดค๋ค.
๊ทธ๋ฆฌ๊ณ ์ฝ์์ฐฝ์ ์ถ๋ ฅ์ ํ์ธํด ๋ดค๋ค.
๋๋ ํ๋ฉด์ orientation ๊ฐ๋ง ๋ฐ๊ณ ์๋๋ฐ ํ๋ฉด์ ์ฌ์ด์ฆ๊ฐ ๋ฐ๋๋๊น ์ธ๋ฐ์์ด rebuild๊ฐ ํธ์ถ๋ ๊ฒ์ด๋ค.
์ด๊ฒ ๋ฐ๋ก MediaQuery.of(context)์ ๋ฌธ์ ์ ์ด๋ค.
MediaQuery.of(context)์ ๊ด๋ จ๋ ๊ฐ ์ค ํ๋๋ผ๋ ๋ณ๊ฒฝ๋๋ฉด ์์ ฏ ์ ์ฒด๋ฅผ rebuild ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
ํด๊ฒฐํ๋ ๋ฒ
์ ๋ง๋ก ์ํ๋ ๊ฐ์ธ orientation๋ง ๋ฐ๊ณ ๋๋จธ์ง์ ๋ณ๊ฒฝ์ ๋ฌด์ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
๋ต์ ๊ฐ๋จํ๋ค.
MediaQuery. [property] Of(context)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๋ง์ฝ size๊ฐ์ ๋ํ ๋ณ๊ฒฝ์ ๋ํด rebuild ํ๊ณ ์ถ๋ค๋ฉด
MediaQuery.sizeOf(context)๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ณ
orientation๊ฐ์ ๋ํ ๋ณ๊ฒฝ๋ง rebuild ํ๊ณ ์ถ๋ค๋ฉด
MediaQuery.orientationOf(context)๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋ค๋ง ์ด ๋ฐฉ๋ฒ์ Flutter 3.10๋ถํฐ ๊ฐ์ ๋ ์ฌํญ์ด๋ผ ์ ๋ฐ์ดํธ ์ดํ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์๋์ ์์์ ์ฐธ๊ณ
https://www.youtube.com/watch?v=xVk1kPvkgAY