Icon

一个使用IconData绘制的图标组件

一个使用IconData绘制的图标组件,例如Material中就预定义了IconData

Icon本身不可交互。如果需要可交互的图标,可以考虑使用IconButton组件。

使用Icon时必须存在一个Directionality祖先组件,通常WidgetsAppMaterialApp会自动引入。Directionality组件用于告诉组件树当前环境是从左往右还是从右往左

Icon组件假定所渲染的图标为正方形,非正方形的图标可能会显示异常。

举例

const Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,
  children: <Widget>[
    Icon(
      Icons.favorite,
      color: Colors.pink,
      size: 24.0
    ),
    Icon(
      Icons.audiotrack,
      color: Colors.green,
      size: 30.0,
    ),
    Icon(
      Icons.beach_access,
      color: Colors.blue,
      size: 36.0,
    ),
  ],
)

这个例子展示了如何创建一排不同大小以及颜色的图标。

构造函数

Icon.new(IconData? icon, {
  Key? key,
  double? size,
  double? fill,
  double? weight,
  double? grade,
  double? opticalSize,
  Color? color,
  List<Shadow>? shadows,
  String? semanticLabel,
  TextDirection? textDirection,
  bool? applyTextScaling,
  BlendMode? blendMode,
  FontWeight? fontWeight
})

属性

属性名属性类型说明
applyTextScalingbool?是否使用MediaQueryTextScaler来缩放图标大小
blendModeBlendMode?应用于图标前景的混合模式
colorColor?图标颜色
filldouble?控制图标填充程度,值为0.0为完全空心轮廓,1.0完全实心填充,中间值为部分填充状态,仅对设置了填充变体的图标有效(如星星、书签、心形等)
fontWeightFontWeight?文本的字重
gradedouble?绘制图标的轮廓的粗细
iconIconData?使用的图标内容
opticalSizedouble?用于控制图标的视觉平衡和比例,光学补偿: 图标在不同尺寸下需要不同的视觉调整。小尺寸图标: 需要稍粗的笔画防止看起来稀疏。大尺寸图标: 需要精细的细节避免显得笨重。 让引擎知道目标的显示尺寸自动优化笔画粗细和比例
shadowsList<Shadow>?在图标下方展示的阴影列表
sizedouble?icon的逻辑像素尺寸大小
textDirectionTextDirection?给图标使用的方向
weightdouble?控制图标的笔画粗细和整体视觉重量