[译]Flutter徽章组件badges

2,440 阅读2分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」。

本文翻译自pub: badges | Flutter Package (flutter-io.cn)

译时版本: badges 2.0.2


badges

这是一个用于创建徽章的Flutter包。徽章可为任意组件添加附加标记。例如,表示一个购物车里的项目数。

image.png

image.png

安装

在 pubspec.yaml 中添加依赖:

dependencies:
  badges: ^2.0.2
import 'package:badges/badges.dart';

基本用法

    Badge(
      badgeContent: Text('3'),
      child: Icon(Icons.settings),
    )

动画

first_badge_example.gifsecond_badge_example.gifthird_badge_example.gif
BadgeAnimationType.slideBadgeAnimationType.scaleBadgeAnimationType.fade

Chip

有时候你想使用 Chip 组件,但是它太大了,即使你把 padding 设置为 0。这正是 Badge 的用武之地。

image.png

    Chip(
      padding: EdgeInsets.all(0),
      backgroundColor: Colors.deepPurple,
      label: Text('BADGE', style: TextStyle(color: Colors.white)),
    ),
    Badge(
      toAnimate: false,
      shape: BadgeShape.square,
      badgeColor: Colors.deepPurple,
      borderRadius: BorderRadius.circular(8),
      badgeContent: Text('BADGE', style: TextStyle(color: Colors.white)),
    ),

自定义用法

这有一些选项可允许更多的控制:

属性描述
Widget badgeContent徽章的内容,通常是 Text 或 Icon
Color badgeColor徽章的背景色
Widget child主组件。默认在红色徽章的下方。通常是 Icon 、 IconButton 、 Text 或按钮
double elevation徽章的阴影
Gradient gradient徽章内容的渐变色
bool toAnimate徽章内容改变时是否显示动画效果
BadgePosition positionBadgePosition.topStart() 、 BadgePosition.topEnd() 、 BadgePosition.bottomStart() 、 BadgePosition.bottomEnd() 其中之一。有时候你想创建唯一的徽章位置或者手动创建一个新的。可使用 BadgePosition.topEnd(top: -12, end: -20) 或 BadgePosition(start, top, end, bottom) 来实现
BadgeShape shapeBadgeShape.circle 或 BadgeShape.square 。如果使用 BadgeShape.square ,可以用 borderRadius 来改变徽章的圆角半径
BorderRadiusGeometry borderRadius徽章的圆角半径。仅在使用 BadgeShape.square 时有效
EdgeInsetsGeometry padding徽章内容的内边距
Duration animationDuration徽章内容改变时,动画的时长
BadgeAnimationType animationTypeBadgeAnimationType.slide 、 BadgeAnimationType.scale 或 BadgeAnimationType.fade 其中之一
bool showBadge动画隐藏或显示徽章的标志
AlignmentGeometry alignment整个组件的对齐
bool ignorePointer是否忽略光标选项,默认为忽略
BorderSide borderSide为徽章添加一个边框

许可证

使用 Apache License 2.0 许可证 - 详细参考 LICENSE