我们在前面章回中介绍Button时介绍过IconButon,它表示带有图标的Button,我们在本章回中的介绍的IconButton
是指Material3中新添加的IconButton,它和之前介绍的IconButton类似,只是在原IconButton的基础上提供了各种风格,接下来我们将详细介绍它们的使用方法。
Material3在原IconButton
的基础上提供了三种风格的IconButton,接下来我们将分别介绍这三种风格的IconButton.
该风格是一种填充风格,它会使用Material3
中的PrimaryColor来填充,同时把Icon的颜色设置为白色。官方为了方便开发人员使用,在SDK中提供了专门的filled
方法来创建此风格的按钮:IconButton.filled().
我们将在后面的小节中通过示例代码来演示如何使用该方法。
该风格是一种填充风格,它会使用Material3中的PrimaryColor来填充,不过颜色比filled风格要淡一些,同时把Icon的颜色设置为黑色。官方为了方便开发人员使用,在SDK中提供了专门的filledTonal
方法来创建此风格的按钮:IconButton.filledTonal()
.我们将在后面的小节中通过示例代码来演示如何使用该方法。
该风格和filled风格类似,该风格重在突出Icon,因为Icon是深色而背景是浅色的,而filled风格重在突出背景,因为背景是深色的,而Icon是浅色的。
该风格是一种空心风格,它会在Icon外层包裹一个边框,边框的颜色和Icon的颜色相同,都是深黑色。官方为了方便开发人员使用,在SDK中提供了专门的outlined
方法来创建此风格的按钮:IconButton.outlined()
.我们将在后面的小节中通过示例代码来演示如何使用该方法。
注意:我们在这里介绍的颜色和风格都是指Material3
的默认风格,如果大家修改了默认风格或者主题颜色,那么出现的颜色和风格会与这里介绍的不同。
介绍完各种风格的IconButton
后,我们通过具体的代码来演示它们的使用方法。
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
IconButton(onPressed: (){}, icon: const Icon(Icons.add)),
IconButton.filled(onPressed: (){}, icon:const Icon(Icons.add)),
IconButton.filledTonal(onPressed: (){}, icon: const Icon(Icons.add)),
IconButton.outlined(onPressed: (){}, icon: const Icon(Icons.add)),
IconButton.filled(onPressed: (){}, icon: const Icon(Icons.add),
//控制图标的颜色
color: Colors.redAccent,
//控制Icon的背景颜色,形状
style: IconButton.styleFrom(
backgroundColor: Colors.red,
//控制星形角的数量,默认是5
shape:const StarBorder(),
),
),
IconButton.filled(onPressed: (){}, icon: const Icon(Icons.face),
color: Colors.blue ,
style: IconButton.styleFrom(
backgroundColor: Colors.yellow,
shape:const StarBorder(points: 6),
),
),
],
),
上面的示例代码中演示了各种风格IconButon的用法,其实它们在本质上的用法相同,详细如下:
我们在代码中只演示了IconButton
中常用的属性,还有其它的属性有待大家去发掘,比如Icon的对齐与边距等。此外,该代码需要在代码中激活useMaterial3
属性,不然无法使用这些IconButton.
我们把各种风格的IconButton
放在了一行中,第一个是默认的风格,中间的是Material3中提供的三种风格,最后两个是自定义的风格,主要修改了IconButton的形状和背景颜色。
我们创建了一个红色的五角星和一个面带微笑的小太阳。下面是程序的运行效果图,请大家参考:
最后,我们对本章回的内容做一个全面的总结:
看官们,与"Material3中的IconButton"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!