[Flutter] 폰트 추가

kimdocs...📄·2023년 11월 27일
0

flutter

목록 보기
3/30
  1. 프로젝트 파일에 ttf 혹은 otf파일 추가

  2. pubspec.yaml 파일 수정

flutter:
  uses-material-design: true

fonts:
    - family: Pretendard
      fonts:
        - asset: assets/fonts/Pretendard-Thin.ttf
          weight: 100
        - asset: assets/fonts/Pretendard-ExtraLight.ttf
          weight: 200
        - asset: assets/fonts/Pretendard-Light.ttf
          weight: 300
        - asset: assets/fonts/Pretendard-Regular.ttf
          weight: 400
        - asset: assets/fonts/Pretendard-Medium.ttf
          weight: 500
        - asset: assets/fonts/Pretendard-SemiBold.ttf
          weight: 600
        - asset: assets/fonts/Pretendard-Bold.ttf
          weight: 700
        - asset: assets/fonts/Pretendard-ExtraBold.ttf
          weight: 800
        - asset: assets/fonts/Pretendard-Black.ttf
          weight: 900
  1. 사용
Text(
	'폰트 테스트 ABCD 1234', 
	style: TextStyle(
		fontFamily: 'Pretendard', 
		fontWeight: FontWeight.bold
	)
)
  • 예시
    import 'dart:ui';
    import 'color.dart';
    
    enum Pretendard {
      title1,
      title2,
      title3,
      subtitle1,
      subtitle2,
      subtitle3,
      subtext1,
      subtext2,
      caption,
    }
    
    extension CGTextStyleExtension on Pretendard {
      static const String _fontFamily = 'Pretendard';
    
      TextStyle? textStyle({Color color = CGColor.text_1st}) {
        return TextStyle(
          fontFamily: _fontFamily,
          fontWeight: _getFontWeight(this),
          fontSize:  _getFontSize(this),
          height: _getHeight(this),
          color: color,
        );
      }
    
      static FontWeight _getFontWeight(Pretendard type) {
        switch (type) {
          case Pretendard.title1:
          case Pretendard.title2:
            return FontWeight.w700;
          case Pretendard.title3:
          case Pretendard.subtitle1:
          case Pretendard.subtitle3:
            return FontWeight.w600;
          case Pretendard.subtitle2:
            return FontWeight.w700;
          default:
            return FontWeight.w400;
        }
      }
    
      static double _getFontSize(Pretendard type) {
        switch (type) {
          case Pretendard.title1:
            return 24;
          case Pretendard.title2:
            return 20;
          case Pretendard.title3:
            return 18;
          case Pretendard.subtitle1:
            return 16;
          case Pretendard.subtitle2:
            return 14;
          case Pretendard.subtitle3:
            return 12;
          case Pretendard.subtext1:
            return 16;
          case Pretendard.subtext2:
            return 14;
          case Pretendard.caption:
            return 12;
          default:
            return 16;
        }
      }
    
      static double _getHeight(Pretendard type) {
        switch (type) {
          case Pretendard.title1:
            return 1.2;
          case Pretendard.title2:
            return 1.4;
          case Pretendard.title3:
          case Pretendard.subtitle1:
            return 1.2;
          case Pretendard.subtitle2:
            return 1.2;
          case Pretendard.subtitle3:
            return 1.1;
          case Pretendard.subtext1:
            return 1.3;
          case Pretendard.subtext2:
            return 1.2;
          case Pretendard.caption:
            return 1.2;
          default:
            return 1.0;
        }
      }
    }
profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글