플러터 개발을 하며 Assets에 접근해야될 많은 경우가 있엇다.
이러한 점을 정리 해두지 않는다면 다음에 또 검색할 것 같아 예방 차~ 정리 해둡니다.
assets에 등록할 파일은 크게 두가지가 있습니다.
font,image 이다 이 둘중 image를 먼저 관리하는 방법을 알려주겠습니다.

font의 경우 family 를 통해 폰트 파일을 분별하며,weight별 폰트를 따로 지정이 가능합니다.
여기서 주의 할점

assets:
- assets/images/
- assets/lottie/
- assets/mp4/
- assets/font/pdf/
fonts:
- family: noto
fonts:
- asset: assets/font/NotoSansKR-Regular.otf
weight: 400
- asset: assets/font/NotoSansKR-Medium.otf
weight: 500
- asset: assets/font/NotoSansKR-Bold.otf
weight: 700
- family: yeonsung
fonts:
- asset: assets/font/yeon-sung-v20-latin_korean-regular.ttf
weight: 400
- family: fixed
fonts:
- asset: assets/font/NotoSansMono-Regular.ttf
weight: 400
- family: YPetIcons
fonts:
- asset: assets/font/YPetIcons.ttf
Image.asset("assets전체 경로");
textStyle ??= const TextStyle(
fontFamily: 'noto',
fontWeight: FontWeight.normal,
fontSize: 16,
letterSpacing: -0.05,
color: Color(0xff111111),
);
fontLoader Flutter는 fontLoader라는 동적으로 폰트를 불러올 수 있는 클래스를 지원합니다.
아래 예제를 보며 동적으로 불러오는 방법에 대해 배워봅시다잉
var fontLoader = FontLoader("nanum");
fontLoader.addFont(fetchFont().then((value) => value!));
// fetchFont는 cdn을 통해 받아온 font에서 response.bodyBytes.buffer 이다
// 만약 assets에서 동적으로 불러올려면
// await rootBundle("assets/font/font.ttf").buffer 이부분을 fetchFont에 적어주면 됩니다.
fontLoader.load();
var jsonAssetManifest = await rootBundle.loadString("AssetManifest.json");
var assetManifest = jsonDecode(jsonAssetManifest);
// {
// "assets/image/1.png":["assets/image1.png"],
// "assets/image/1.png":["assets/image2.png"]}
안녕하세요! 유익한 글 잘 읽었습니다!
쓰신 글 내용중 궁금한 점이 있어 질문 남깁니다!
Flutter web에서 font 다운로드 속도 대비하여 assets/font/pdf/에 넣어 놓고 사용하셨다고 하셨는데
해당 파일 경로에 폰트 파일들을 다운받아 넣으신건가요?
일반적으로 assets/font 하위에 폰트 파일들을 넣어놓는것과 차이점이 있을까요?