관리 메뉴

Jin's Dev Story

[Flutter] ThemeData() λ³Έλ¬Έ

Web & Android/Flutter

[Flutter] ThemeData()

woojin._. 2023. 9. 22. 22:31

πŸ’‘ μŠ€νƒ€μΌμ„ 넣을 λ•Œ μœ„μ ―λ§ˆλ‹€ ν•˜λ‚˜ν•˜λ‚˜ μŠ€νƒ€μΌμ„ λ„£μœΌλ©΄ μ½”λ“œκ°€ λ”λŸ¬μ›Œμ§€κΈ° λ•Œλ¬Έμ— ThemaData() μ‚¬μš©

μ‚¬μš©λ²•

  • MaterialApp() μ•ˆμ— ThemeData() μ—΄κΈ°
MaterialApp(
  theme : ThemeData(),
  home : MyApp()
)

적용 ν›„

ThemeData(
  iconTheme: IconThemeData(color: Colors.red, size: 60),
  appBarTheme: AppBarTheme(
    color: Colors.grey,
  ),
)
  • λͺ¨λ“  μ•„μ΄μ½˜ 빨간색
  • AppBar νšŒμƒ‰

→ AppBar μ•ˆμ˜ actions: [] μ•„μ΄μ½˜μ— λΉ¨κ°„μƒ‰μœΌλ‘œ 적용이 μ•ˆλœλ‹€λ©΄?

  • AppBarTheme() μ•ˆμ— μ•„μ΄μ½˜ μŠ€νƒ€μΌ 지정

textTheme()

  • Text() μŠ€νƒ€μΌ λ³€κ²½ → textTheme μ‚¬μš©ν•˜λ©΄ 됨
ThemeData(
  textTheme: TextTheme(
    bodyText2: TextStyle(
        color : Colors.blue,
    ),
  ),
)
  • textTheme μ•ˆμ—λŠ” headline1, headline2, bodyText1 λ“±μ˜ κΈ€μž μŠ€νƒ€μΌ μ’…λ₯˜κ°€ 있음
  • Text μœ„μ ―μ€ bodyText2 μ‚¬μš©

λ²„νŠΌ λ””μžμΈ λ³€κ²½ - styleFrom()

ThemeData(
  textButtonTheme: TextButtonThemeData(
    style: TextButton.styleFrom(
      primary: Colors.black,
      backgroundColor: Colors.orange,
    )
  ),
)
  • styleFrom()은 ButtonStyle() 사본을 ν•˜λ‚˜ μƒμ„±ν•΄μ£ΌλŠ” ν•¨μˆ˜

ν•˜μœ„ ThemeData() 생성

  • λ ˆμ΄μ•„μ›ƒ 쀑간에 ThemeData() ν•˜λ‚˜ μƒμ„±ν•˜λ©΄ 됨
Container( 
  child : Theme(
    data : ThemeData(κΈ€μž νŒŒλž—κ²Œ ν•˜λŠ” μŠ€νƒ€μΌ~~),
    child : Container(
      μ—¬κΈ°λΆ€ν„°λŠ” κΈ€μž 파래짐~~
    )
  )
)

 

ThemeData() μ•ˆμ˜ νŠΉμ • μŠ€νƒ€μΌ 뢈러였기

Text('μ•ˆλ…•', style: Theme.of(context).textTheme.bodyText1)
  • Theme.of()λŠ” 쑱보λ₯Ό ν•˜λ‚˜ μž…λ ₯ν•  수 있음
  • 이 μ‘±λ³΄μ—μ„œ κ°€μž₯ κ°€κΉŒμš΄ ThemeData()λ₯Ό 찾아와 κ°€μ Έμ™€μ£ΌλŠ” ν•¨μˆ˜
  • μœ„μ˜ μ˜ˆμ œλŠ” bodyText1에 μ •μ˜ν•œ μŠ€νƒ€μΌμ„ κ°€μ Έμ˜¬ 수 있음