第二百零三回 修改组件风格的另外一种方法


我们在上一章回中介绍了WebView组件相关的内容,本章回中将介绍如何在图标旁边添加小红点.闲话休提,让我们一起Talk Flutter吧。

概念介绍

在实际项目中有时候需要在图标旁边显示小红点,而且小红点内还有数字,比如购物车图标显示小红点表示有商品添加到购物车中,小红点内的数字就是购物车中商品的数
量。本章回中将介绍如何在图标旁边添加小红点。

实现方法

在Android或者IOS原生开发中,如果想实现图标旁边的小红点就需要自定义View。在Flutter中就不需要这么做了,因为官方已经给我们封装了相应的组件:Badge.
我们直接拿来使用就可以在图标旁边添加小红点。和其它的组件一样,Badge组件提供了相关的属性来控制自己,下面是常用的属性:

  • label属性:用来控制红点中显示的内容;
  • backgroundColor属性:用来控制红点的颜色,默认是红色;
  • textColor属性:用来控制红点中文字的颜色,默认是白色;
  • alignment属性:用来控制红点的位置,默认传值是topRight;
  • child属性:用来控制红点的宿主,就是说在哪个组件旁边显示红点;
    只通过文字介绍这些属性比较抽象,在后面的小节中,我们将通过具体的代码来演示Badge组件的使用方法。

示例代码

Badge(
  ///红点中显示的内容
  label: Text('3'),
  ///默认红底白字
  backgroundColor: Colors.purpleAccent,
  textColor: Colors.green,
  ///红点的位置,默认topRight
  alignment: Alignment.topLeft,
  ///红点的偏移,负值为向左和上,正值为向右和下
  offset: Offset(20.0, -10.0),
  ///在哪个组件右上角显示红点
  child: Icon(Icons.notifications),
)

badges.Badge(
  position: badges.BadgePosition.topEnd(top: -10,end: -15),
  onTap: () => debugPrint('onTap'),
  badgeContent: const Text('3'),
  badgeAnimation: const badges.BadgeAnimation.scale(animationDuration: Duration(seconds: 2)),
  badgeStyle: const badges.BadgeStyle(
    shape: badges.BadgeShape.twitter,
  ),
  child: const Icon(Icons.notifications),
),

在上面的代码中,我们在通知图标上显示了小红点,代码中的关键位置都添加了注释,以方便大家理解。此外,我们在代码中还使用三方包:Badges.该包也可以在图标
旁边添加小红点。不过它在Badge组件的基础上做了很多扩展,比如响应点击事件,修改红点的样式,以动画的形式显示红点。上面示例代码中演示了该包的使用方法。
编译并且运行上面的程序,就可以在页面中看到通知图标以及它右上角的小红点。我在这里就不演示程序的运行结果了,建议大家自己动手去实战。
看官们,与"如何在图标旁边添加小红点"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关推荐

  1. 第二 修改组件风格另外方法

    2023-12-13 07:38:05       45 阅读
  2. 第二

    2023-12-13 07:38:05       42 阅读
  3. 第二

    2023-12-13 07:38:05       39 阅读
  4. 第二

    2023-12-13 07:38:05       46 阅读
  5. 第二二十

    2023-12-13 07:38:05       44 阅读
  6. 第二十四

    2023-12-13 07:38:05       36 阅读
  7. 第二十七

    2023-12-13 07:38:05       28 阅读
  8. 第二十六

    2023-12-13 07:38:05       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-13 07:38:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-13 07:38:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-13 07:38:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-13 07:38:05       20 阅读

热门阅读

  1. EasyExcel

    2023-12-13 07:38:05       43 阅读
  2. msSQL和MySQL的区别?

    2023-12-13 07:38:05       51 阅读
  3. MySQL忘记root密码和修改root密码的解决方法

    2023-12-13 07:38:05       34 阅读
  4. 【解惑系列】如何提高一个接口的tps

    2023-12-13 07:38:05       37 阅读
  5. JVM类加载机制(中)

    2023-12-13 07:38:05       42 阅读
  6. React Context:跨层级组件共享状态参数、状态

    2023-12-13 07:38:05       36 阅读
  7. k8s 安装firewalld导致的网络疑难问题处理

    2023-12-13 07:38:05       36 阅读
  8. vue-socket.io以及原生websocket的使用

    2023-12-13 07:38:05       28 阅读