??近期在使用Flutter跨平臺技術(shù)開發(fā)公司新的App帅韧,現(xiàn)在Flutter也正在良性發(fā)展里初,網(wǎng)上也有很多技術(shù)型文章,在我的Flutter文集中忽舟,不會有很多階段性或者啥進(jìn)階性的分享双妨,只是時不時穿插一些自己工作中用到的,而網(wǎng)上又找不到叮阅,自己搗鼓出來的刁品,我覺得這樣會對需要的人更有幫助,不然網(wǎng)上的技術(shù)文章都會千篇一律帘饶。也是自己沒時間哑诊,寫寫短文吧~
《Flutter的撥云見日》系列文章如下:
1、Flutter中指定字體(全局或者局部及刻,自有字庫或第三方)
一镀裤、全局或者局部添加自有字庫
1、首先缴饭,下載字庫
??我們需要去字庫網(wǎng)下載字庫暑劝,如Flutter中文網(wǎng)提到的Google Fonts(需翻墻),還有一些第三方的字庫第三方字庫(商用謹(jǐn)慎)颗搂,這類字庫可能不免費有版權(quán)担猛,使用到個人項目上沒事,但是如果使用到商業(yè)項目上要特別小心,以防碰瓷傅联!
??下載的字體庫文件類似**.ttf先改,只有就可以將其放在flutter工程目錄下的asset(和lib同級,沒有此目錄自己新建)目錄下的fonts中(在asset中新建fonts目錄)蒸走,如圖1.1:
2仇奶、在pubspec.yaml文件中配置字庫屬性
??在pubspec.yaml文件中配置:
fonts:
- family: Poppins
fonts:
- asset: lib/fonts/Poppins-Regular.ttf
- asset: lib/fonts/Poppins-SemiBold.ttf
weight: 700
uses-material-design: true
family
是字體的名稱, 你可以在TextStyle
的 fontFamily
屬性中使用.
asset
是相對于 pubspec.yaml
文件的路徑.這些文件包含字體中字形的輪廓。在構(gòu)建應(yīng)用程序時比驻,這些文件會包含在應(yīng)用程序的asset包中该溯。
可以給字體設(shè)置粗細(xì)、傾斜等樣式
-
weight
屬性指定字體的粗細(xì)别惦,取值范圍是100到900之間的整百數(shù)(100的倍數(shù)). 這些值對應(yīng)FontWeight
狈茉, 可以用于TextStyle
的fontWeight
屬性 -
style
指定字體是傾斜還是正常,對應(yīng)的值為italic
和normal
. 這些值對應(yīng)FontStyle
可以用于TextStyle
的 fontStyleTextStyle
屬性
uses-material-design: true
是指如果需要使用md風(fēng)格的組件掸掸,一定要把uses-material-design設(shè)為true
3氯庆、使用自定義字體
3.1、局部使用自定義字體
TextStyle textStyle = TextStyle(fontFamily: 'Poppins',) ///在TextStyle中引用字體庫family
Text('', style: textStyle); ///在Text中引用
3.2猾漫、全局使用自定義字體
MaterialApp(
title: 'Test APP',
theme: ThemeData(
fontFamily: 'Poppins',
)
)
///在根文件中的MaterialApp或者CupertinoApp中的theme主題
///中ThemeData的fontFamily屬性中加入字體family
3.3点晴、多處使用自定義字體當(dāng)非全局使用
var textFontStyle = TextStyle(
fontFamily:"Poppins", // 指定該Text的字體。
)
///用到的地方用 .copyWith 這個方法, 如:
Text(
"996ICU",
style: textFontStyle.copyWith(
fontSize: 18.0,
color: Colors.red,
fontWeight: FontWeight.bold,
),
)
二悯周、全局或者局部添加第三方字庫
1、在pubspec.yaml文件中引入第三方字庫
sms_fonts: ^1.0.0 ///假設(shè)有這么個第三方字體庫
加入第三方字庫后flutter pub get一下
2陪竿、局部使用第三方字庫
TextStyle textStyle = TextStyle(
fontFamily: 'Poppins',
package: 'sms_fonts' ///第三方字庫的package包名
) ///在TextStyle中引用第三方字體庫family
Text('', style: textStyle); ///在Text中引用
3禽翼、全局使用第三方字庫
這里估計是全文精華部分,因為我查閱資料或者看博客族跛,前面講的都差不多闰挡,直到這里我查不到資料了,很多文章也沒說礁哄,都是講的全局使用自定義字庫长酗,因為像TextStyle使用第三個字庫有個package屬性⊥┤蓿可是
MaterialApp或者CupertinoApp卻沒有這個屬性夺脾。
后面我去查了TextStyle源碼,發(fā)現(xiàn)了新大陸~
fontFamily = package == null ? fontFamily : 'packages/$package/$fontFamily',
///查看TextStyle源碼發(fā)現(xiàn)了這個茉继,原來這個package也只是和fontFamily字符串組合咧叭,用于定位字體文件位置
這里我們就解決了如何全局使用第三方字體庫了,(一般用于公司多個app烁竭,使用同一套字體庫菲茬,自定義字體庫package并發(fā)布到私有倉庫情形)
MaterialApp(
title: 'Test APP',
theme: ThemeData(
fontFamily: 'packages/sms-fonts/Poppins', ///只要將字體庫引用改成該格式就可以了
)
)
三、結(jié)語
這是我的第一篇Flutter雜文,感謝大家耐心看到這婉弹,后期還會不定期更新Flutter各種雜七雜八的玩意兒~_
申明:禁用于商業(yè)用途睬魂,如若轉(zhuǎn)載,請附帶原文鏈接镀赌。http://www.reibang.com/p/94ac0469f796蟹蟹~