flutter์์๋ MaterialApp ์์ ฏ์ ThemeData ์์ ฏ์ ๋๊ฒจ์ฃผ์ด ๋ด๊ฐ ์ํ๋ Theme ์ผ๋ก ์ ์๋ ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.
ํ์ง๋ง, ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ค ๋ณด๋ฉด ThemeData๊ฐ ์ด๋ ์์ ฏ์ ์ด๋ ๋ถ๋ถ์ ์ ์ฉ๋๋์ง, ์ด๋ ๋ถ๋ถ์๋ ์ ์ฉ์ด ๋์ง ์๋์ง ๋๋ฌด๋ ๋ชจํธํด์ง๊ณ Theme.of(context)
์ผ๋ก ์ ์ฉํ ๋ถ๋ถ๋ค์ tracking ํ๊ธฐ๊ฐ ์ฝ์ง ์์ฃ .
๊ทธ๋์, ์ ๊ฒฝํ์ ํ ๋๋ก ํ ๋ฐฉ๋ฒ ํ๊ฐ์ง๋ฅผ ์ด์ผ๊ธฐ ํด๋ณด๋ ค ํฉ๋๋ค.
Flutter custom theme ์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ด์. flutter ์ themeData ์๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋ด๊ฐ ์ํ๋ ์ด๋ฆ์ผ๋ก theme ์ ์ ์ํ๊ณ ์ํ๋ ๊ณณ์ ์ง์ ์ง์ ์ ํด์ค์ผ ํด์.
CustomThemeData๋ฅผ extends ํ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ๋ด๊ฐ ์ํ๋ ์๊ณผ, ํ ์คํธ ์คํ์ผ ๊ฐ์ ๋ชจ๋ themeData๋ฅผ ์ ์ํด ์ฌ์ฉํ ์ ์์ด์.
Container color์ textStyle, align ์ CustomTheme ์ผ๋ก ์ ์ฉ
๊ทธ๋์, ์ ๊ฑฐ ๋ง๊ณ ๋ญ๊ฐ ์ข์๋ฐ? ๋ผ๊ณ ํ ์ ์๋๋ฐ. ๊ฐ์ธ์ ์ผ๋ก ๋๊ผ๋ ์ฅ์ ๋ช๊ฐ์ง๋ง ์ด์ผ๊ธฐ ํด๋ณผ๊ฒ์. ์ฒซ ๋ฒ์งธ๋ก ์ธ์ด๋ณ๋ก ๋ชจ๋ baseline ์ด ๋ค๋ฆ ๋๋ค. ๊ทธ๋์ ์ด ํ ์คํธ๋ค์ด ๋ชจ๋ ๊ฐ์ ์์น์ ์์๊ฑฐ๋ผ๊ณ ๋ณด์ฅํ๊ธฐ๊ฐ ์กฐ๊ธ ํ๋ค์ด์. ์ ๊ฐ์ธ์ ์ธ ๊ฒฝํ์์๋์. ๊ทธ๋์ ์ ํฌ ํ์์๋ ์ธ์ด๋ณ๋ก ๋ค๋ฅธ ํ ์คํธ ์คํ์ผ์ ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , ์ด๋ฐ์์ผ๋ก ํด๊ฒฐํ์ด์. context๋ก languageCode๋ฅผ ๊ฐ์ ธ์์ ํด๋นํ๋ ์คํ์ผ์ ์ฃผ๋๊ฑฐ์ฃ . ๋๋ถ์ ๋์์ด๋๋์ด ๋ง์กฑํ ๋งํ ๊ฒฐ๊ณผ๊ฐ ๋์์์ด์.
๋คํฌ๋ชจ๋๋ฅผ ์ง์ํ๋ ค๊ณ ํ๋ฉด์ dark ์ปฌ๋ฌ์ light ์ปฌ๋ฌ๋ฅผ ๋ฐ๋ก ์ง์ ํด๋๊ณ ์ฌ์ฉํ๊ณค ํ๋๋ฐ, ์ด ๋ ๋
์๋ค์ ์ฌ์ฉํ ๋
bool isDark = Theme.of(context).birghtness == Brightness.dark;
์ด๋ฐ flag๋ฅผ ํ๋ ๋๊ณ ์ฌ์ฉํ๊ณค ํ์ด์. ๋๋ถ์ ํํธํ๊ฐ ์ฌํด์ก๊ณ , ๊ด๋ฆฌ๊ฐ ํ๋ค์ด์ก์ต๋๋ค. ์ฝ๋ ๋ ์ณ์ผํ๋ ๋จ์ ๋ ์์์ฃ . CustomTheme์ ์ฐ๊ณ ๋์๋ ์๋์์ ์ดํด๋ณผ ์ ์๋ฏ์ด darkMode์ผ๋๋ ์์์ dark theme์ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ค์ผ ์ ์์์ด์.
flutter theme ๋๋ฌธ์ ๋ํต๊ณผ ํจ๊ป ๊ฒช์๋ ๊ฒ๋ค์ ๊ณต์ ํด ๋ดค์ด์. ๋ถ์กฑํ๋ ์ ์ด๋ ์๊ฒฌ์ด ์์ผ์๋ค๋ฉด ๋๊ธ๋ก ๊ณต์ ํด์ฃผ์ธ์! ์ ์ด์ผ๊ธฐ๊ฐ ์ฌ๋ฌ๋ถ์ ๊ฐ๋ฐ์ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ด์ (: