3-19【文檔講解】主題和文字處理
聲明:Flutter專欄文檔均來自慕課網(wǎng)
https://coding.imooc.com/class/321.html
主題和文字處理
- 如何在 Text widget上設(shè)置自定義字體倡蝙?
- 如何在Text上定義樣式?
- 如何給 App 設(shè)置主題吊输?
如何在 Text widget上設(shè)置自定義字體谦屑?
- 在 iOS 中,你在項(xiàng)目中引入任意的
ttf
文件穆桂,并在info.plist
中設(shè)置引用狼讨; - 在Android SDK(從Android O開始)中面徽,創(chuàng)建一個(gè)Font資源文件并將其傳遞到TextView的FontFamily參數(shù)中腻要;
在 Flutter 中設(shè)置字體更加簡便复罐,只需要在文件夾中放置字體文件,并在 pubspec.yaml
中引用它雄家,就像添加圖片那樣:
fonts:
- family: MyCustomFont
fonts:
- asset: fonts/MyCustomFont.ttf
- style: italic
然后效诅,通過如下方式使用字體:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Sample App"),
),
body: Center(
child: Text(
'This is a custom font text',
style: TextStyle(fontFamily: 'MyCustomFont'),
),
),
);
}
如何在Text上定義樣式?
除了字體以外趟济,你也可以給 Text
widget 的樣式元素設(shè)置自定義值乱投。Text
widget 接受一個(gè) TextStyle
對(duì)象,你可以指定許多參數(shù)顷编,比如:
- color
- decoration
- decorationColor
- decorationStyle
- fontFamily
- fontSize
- fontStyle
- fontWeight
- hashCode
- height
- inherit
- letterSpacing
- textBaseline
- wordSpacing
如何給 App 設(shè)置主題戚炫?
Flutter 實(shí)現(xiàn)了一套漂亮的 Material Design
組件,它接管了一大堆你需要的樣式和主題媳纬。
為了充分發(fā)揮你的 App 中 Material Design
組件的優(yōu)勢(shì)双肤,聲明一個(gè)頂級(jí) widget,MaterialApp
层宫,用作你的 App 入口杨伙。MaterialApp
是一個(gè)便利組件,包含了許多 App 通常需要的 Material Design 風(fēng)格組件萌腿。它通過一個(gè) WidgetsApp
添加了 Material Design
功能來實(shí)現(xiàn)。
但是 Flutter 足夠地靈活和富有表現(xiàn)力來實(shí)現(xiàn)任何其他的設(shè)計(jì)語言抖苦。在 iOS 上毁菱,你可以用 Cupertino library 來制作遵守 Human Interface Guidelines 的界面。查看這些 widget 的集合锌历,可參考 Cupertino widgets gallery贮庞。
你也可以在你的 App 中使用 WidgetApp
,它提供了許多相似的功能究西,但不如 MaterialApp
那樣強(qiáng)大窗慎。
對(duì)任何子組件定義顏色和樣式,可以給 MaterialApp
widget 傳遞一個(gè) ThemeData
對(duì)象。舉個(gè)例子遮斥,在下面的代碼中峦失,primary swatch
被設(shè)置為藍(lán)灰色,并且文字的選中顏色是紅色:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Sample App',
theme: ThemeData(
primarySwatch: Colors.blueGrey,
textSelectionColor: Colors.red
),
home: Scaffold(
appBar: AppBar(),
body: Text('Android术吗、iOS開發(fā)者快速上手Flutter-主題和文字處理'),
),
);
}
}