๐Ÿ‘จโ€๐ŸŽจ Flutter ์—์„œ Customizing ๊ฐ€๋Šฅํ•œ ๋””์ž์ธ ์‹œ์Šคํ…œ ์‚ฌ์šฉํ•˜๊ธฐ

LADยท2021๋…„ 8์›” 8์ผ
1

flutter

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

flutter์—์„œ๋Š” MaterialApp ์œ„์ ฏ์— ThemeData ์œ„์ ฏ์„ ๋„˜๊ฒจ์ฃผ์–ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” Theme ์œผ๋กœ ์ •์˜๋œ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋‹ค ๋ณด๋ฉด ThemeData๊ฐ€ ์–ด๋Š ์œ„์ ฏ์— ์–ด๋Š ๋ถ€๋ถ„์— ์ ์šฉ๋˜๋Š”์ง€, ์–ด๋Š ๋ถ€๋ถ„์—๋Š” ์ ์šฉ์ด ๋˜์ง€ ์•Š๋Š”์ง€ ๋„ˆ๋ฌด๋‚˜ ๋ชจํ˜ธํ•ด์ง€๊ณ  Theme.of(context) ์œผ๋กœ ์ ์šฉํ•œ ๋ถ€๋ถ„๋“ค์€ tracking ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์ฃ .

๊ทธ๋ž˜์„œ, ์ œ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ํ•œ ๋ฐฉ๋ฒ• ํ•œ๊ฐ€์ง€๋ฅผ ์ด์•ผ๊ธฐ ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽจ Flutter custom theme


Flutter custom theme ์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์–ด์š”. flutter ์˜ themeData ์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ theme ์„ ์ •์˜ํ•˜๊ณ  ์›ํ•˜๋Š” ๊ณณ์— ์ง์ ‘ ์ง€์ •์„ ํ•ด์ค˜์•ผ ํ•ด์š”.

Custom theme class ๋งŒ๋“ค๊ธฐ

CustomThemeData๋ฅผ extends ํ•œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ƒ‰๊ณผ, ํ…์ŠคํŠธ ์Šคํƒ€์ผ ๊ฐ™์€ ๋ชจ๋“  themeData๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

Container color์™€ textStyle, align ์„ CustomTheme ์œผ๋กœ ์ ์šฉ

๐ŸคŸ ์žฅ์  1. ์–ธ์–ด๋ณ„ ๋‹ค๋ฅธ ํ…์ŠคํŠธ ์Šคํƒ€์ผ ์“ฐ๊ธฐ


๊ทธ๋ž˜์„œ, ์ €๊ฑฐ ๋ง๊ณ  ๋ญ๊ฐ€ ์ข‹์€๋ฐ? ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ. ๊ฐœ์ธ์ ์œผ๋กœ ๋Š๊ผˆ๋˜ ์žฅ์  ๋ช‡๊ฐ€์ง€๋งŒ ์ด์•ผ๊ธฐ ํ•ด๋ณผ๊ฒŒ์š”. ์ฒซ ๋ฒˆ์งธ๋กœ ์–ธ์–ด๋ณ„๋กœ ๋ชจ๋‘ baseline ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ํ…์ŠคํŠธ๋“ค์ด ๋ชจ๋‘ ๊ฐ™์€ ์œ„์น˜์— ์žˆ์„๊ฑฐ๋ผ๊ณ  ๋ณด์žฅํ•˜๊ธฐ๊ฐ€ ์กฐ๊ธˆ ํž˜๋“ค์–ด์š”. ์ œ ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์—์„œ๋Š”์š”. ๊ทธ๋ž˜์„œ ์ €ํฌ ํŒ€์—์„œ๋Š” ์–ธ์–ด๋ณ„๋กœ ๋‹ค๋ฅธ ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๊ณ , ์ด๋Ÿฐ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์–ด์š”. context๋กœ languageCode๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•ด๋‹นํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ฃผ๋Š”๊ฑฐ์ฃ . ๋•๋ถ„์— ๋””์ž์ด๋„ˆ๋‹˜์ด ๋งŒ์กฑํ•  ๋งŒํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”์—ˆ์–ด์š”.

๐ŸคŸ ์žฅ์  2. no more brightness check


๋‹คํฌ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๋ ค๊ณ  ํ•˜๋ฉด์„œ dark ์ปฌ๋Ÿฌ์™€ light ์ปฌ๋Ÿฌ๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ๋Š”๋ฐ, ์ด ๋‘ ๋…€์„๋“ค์„ ์‚ฌ์šฉํ• ๋•Œ
bool isDark = Theme.of(context).birghtness == Brightness.dark;
์ด๋Ÿฐ flag๋ฅผ ํ•˜๋‚˜ ๋‘๊ณ  ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ์–ด์š”. ๋•๋ถ„์— ํŒŒํŽธํ™”๊ฐ€ ์‹ฌํ•ด์กŒ๊ณ , ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋” ์ณ์•ผํ•˜๋Š” ๋‹จ์ ๋„ ์žˆ์—ˆ์ฃ . CustomTheme์„ ์“ฐ๊ณ ๋‚˜์„œ๋Š” ์•„๋ž˜์—์„œ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด darkMode์ผ๋•Œ๋Š” ์•Œ์•„์„œ dark theme์„ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์–ด์š”.

๐Ÿ‘จโ€๐ŸŽจ ๋งˆ์น˜๋ฉฐ


flutter theme ๋•Œ๋ฌธ์— ๋‘ํ†ต๊ณผ ํ•จ๊ป˜ ๊ฒช์—ˆ๋˜ ๊ฒƒ๋“ค์„ ๊ณต์œ ํ•ด ๋ดค์–ด์š”. ๋ถ€์กฑํ–ˆ๋˜ ์ ์ด๋‚˜ ์˜๊ฒฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”! ์ œ ์ด์•ผ๊ธฐ๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฐœ๋ฐœ์— ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š” (:

profile
Flutter, iOS

0๊ฐœ์˜ ๋Œ“๊ธ€