๐Ÿ‹ Flutter

[Flutter] MediaQuery.of(context) ์‚ฌ์šฉ์‹œ ๋ฌธ์ œ์ 

Dogfoot_JW 2024. 10. 7. 19:04

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