Wigets学习之Icon
时间:2021-06-25 00:48:31
Icon
图标部件,用于显示图标
icon
: 图标(必填),可以使用Icons
指定值size
:图标大小color
:图标颜色semanticLabel
:语义化textDirection
:文本排列方式
注意:如果要使用默认的
Material
图标,需要在pubspec.yaml
文件中设置如下:
flutter:
uses-material-design: true
import 'package:flutter/material.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
textDirection: TextDirection.ltr,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(
Icons.ac_unit,
textDirection: TextDirection.ltr,
color: Colors.white,
size: 30,
),
Icon(
Icons.access_alarm_outlined,
textDirection: TextDirection.ltr,
color: Colors.blue,
size: 30,
),
Icon(
Icons.cake_outlined,
textDirection: TextDirection.ltr,
color: Colors.orange,
size: 30,
),
],
);
}
}
使用自定义图标
要想使用自定义图标的话可以使用IconData
来指定,下面使用iconfont
来举例。
配置图标字体资源
在iconfont
官网将图标资源下载下来只复制iconfont.ttf
文件到项目目录中如:lib/assets/fonts/iconfont.ttf
。
然后在pubspec.yaml
文件中引入资源
name: learn
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
+ fonts:
+ - family: iconFont
+ fonts:
+ - asset: lib/assets/fonts/iconfont.ttf
fonts
配置项:
family
:指定 fontFamily,可以用在需要指定fontFamily
参数的位置fonts
:指定资源位置weight
:指定字体粗细,取值范围:100~900style
:指定斜体(italic
)还是正常(normal
)
注意:你可能在其他地方看到过,如果资源放在
lib
下则不需要再加上lib/
,但是我实际测试如果不加则会报错找不到资源:Error: unable to locate asset entry in pubspec.yaml: "assets/fonts/iconfont.ttf".
。
使用图标
在iconfont
官网上找到图标的Unicode
编码并将&#
换成0
使用,如:
→0xe608
,然后使用IconData
。
import 'package:flutter/material.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
textDirection: TextDirection.ltr,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(
IconData(0xe608, fontFamily: 'iconFont'),
textDirection: TextDirection.ltr,
color: Colors.white,
size: 30,
),
Icon(
IconData(0xea0a, fontFamily: 'iconFont'),
textDirection: TextDirection.ltr,
color: Colors.white,
size: 30,
),
Icon(
IconData(0xe640, fontFamily: 'iconFont'),
textDirection: TextDirection.ltr,
color: Colors.white,
size: 30,
),
],
);
}
}