大家好今天集中介绍下 Flutter 自带的几个按钮。
原文 https://medium.com/@kaushikidum29/flutter-buttons-4ac64d70f0b2
按钮是用户触发事件的控件,比如采取行动、做出选择、搜索等等。它们可以放在我们 UI 的任何地方,比如对话框、表单、卡片、工具栏等等。
在 Flutter 中按钮的标准特性如下:
以下是 Flutter 中提供的不同类型的按钮:
扁平按钮ーー这是一个文本标签按钮,没有太多装饰,显示没有任何标高。平面按钮有两个必需的属性: ー child 和 onPress ()。默认情况下,平面按钮没有颜色,其文本为黑色。但是,我们可以分别使用 color 和 textColor 属性对按钮和文本使用 color。
按钮的颜色是蓝灰色,Splash 的颜色是粉红色
FlatButton(
splashColor: Colors.pink,
color: Colors.blueGrey,
textColor: Colors.white,
minWidth: MediaQuery.of(context).size.width / 2,
height: 45,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: const Text(
'Flat Button',
),
onPressed: () {},
)
注意: 自 2021 年 5 月起,FlatButton 类在 flutter 中将被弃用。应改为使用 TextButton 类。后面的类最终将从 flutter SDK 中删除,因此建议转移到新的类。
凸起按钮ーー它是一个基于材质 widget 的按钮,具有一个矩形主体。它类似于一个平面按钮,但是当按下按钮时,它的高度会增加。它有几个属性,如文本颜色,形状,填充,按钮颜色,按钮颜色禁用时,动画时间,立面等。此按钮有两个回调函数。
RaisedButton(
child: const Text(
"Raised Button",
style: TextStyle(fontSize: 17),
),
onPressed: () {},
color: Colors.blue,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
textColor: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
splashColor: Colors.grey,
)
注意: 自 2021 年 5 月起,不推荐使用 RaisedButton 类的 flutter。应该改为使用 EleatedButton 类。后面的类最终将从 flutter SDK 中删除,因此建议转移到新的类。点击这里查看迁移指南
浮动操作按钮: ー FAB 按钮是一个圆形图标按钮,它触发应用程序中的主要操作。它是当今应用程序中最常用的按钮。我们可以使用这个按钮来添加、刷新或共享内容。Flutter 建议每个屏幕最多使用一个 FAB 按钮。
浮动动作按钮有两种类型:
它创建一个简单的圆形浮动按钮,其中包含一个子部件。T 必须有一个子参数来显示 widget 。
floatingActionButton: FloatingActionButton(
backgroundColor: Colors.deepOrangeAccent,
foregroundColor: Colors.white,
onPressed: () => {},
child: const Icon(Icons.add),
)
它创建了一个宽的浮动按钮,其中包含一个图标和一个标签。它使用标签和图标参数,而不是子参数。
floatingActionButton: FloatingActionButton.extended(
onPressed: () {},
backgroundColor: Colors.teal,
icon: const Icon(Icons.save),
label: const Text("Save"),
)
下拉按钮ーー下拉按钮用于在屏幕上创建一个漂亮的覆盖层,允许用户从多个选项中选择任何项目。 Flutter 允许一个简单的方法来实现一个下拉框或下拉按钮。此按钮显示当前选定的项目和一个箭头,该箭头打开一个菜单,从多个选项中选择一个项目。
// Initial Selected ValueString
var dropdownvalue = 'Item 1';
// List of items in our dropdown menuvar
var items = [
'Item 1',
'Item 2',
'Item 3',
'Item 4',
'Item 5',
];
//Drop-Down
return ButtonContainer(
padding: const EdgeInsets.all(5.0),
decoration:
BoxDecoration(color: Colors.yellowAccent, border: Border.all()),
child: DropdownButton(
// Initial
Valuevalue: dropdownvalue,
// Down Arrow
Iconicon: const Icon(Icons.keyboard_arrow_down),
// Array list of
itemsitems: items.map((String items) {
return DropdownMenuItem(
value: items,
child: Text(items),
);
}).toList(),
// After selecting the desired option,it will
// change button value to selected
valueonChanged: (String? newValue) {
setState(() {
dropdownvalue = newValue!;
});
},
),
);
IconButton ー IconButton 是打印在“材质” widget 上的图片。这是一个有用的 widget ,给 Flutter UI 一种材质设计的感觉。我们还可以定制这个按钮的外观和感觉。简单地说,它是一个图标,当用户触摸它时,它会做出反应。
IconButton(
color: Colors.blue,onPressed: () {},
icon: const Icon(Icons.mic),
),
InkWell 按钮ーー InkWell 按钮是一种 Material 设计概念,用于触摸响应。这个 widget 位于“材质” widget 的下面,在这个 widget 中实际绘制墨水反应。它通过添加手势反馈来创建应用程序 UI 交互。主要用于增加飞溅波纹效应。
//var
int _volume = 0;
//InkWell code
InkWell(
splashColor: Colors.green,
highlightColor: Colors.blue,
child: Icon(Icons.ring_volume, size: 50),
onTap: () {setState(() {_volume += 2;});},),
Text(_volume.toString(), style: TextStyle(fontSize: 50)),
);
它将提供与下面的截图类似的用户界面。每次我们按环音量按钮,它会增加音量 2。
弹出菜单按钮ー 它是一个按钮,当按下它时显示菜单,然后调用 onSelected 方法,菜单将被取消。这是因为选择了多个选项中的项。此按钮包含文本和图像。它将主要使用设置菜单列出所有选项。它有助于创造良好的用户体验。
// Initial Selected Value
String dropdownvalue = 'Item 1' ;
// List of items in our dropdown menu
var items = [
'Item 1',
'Item 2',
'Item 3',
'Item 4',
'Item 5',
];
// Drop-Down Button
Container
padding: cost EdgeInsets.all(5.0),
decoration: BoxDecoration(
color: Colors.yellowAccent, border: Border.all()),
child: DropdownButton/
// Initial Value
value: dropdownvalue,
/1 Down Arrow Icon
icon: const Icon(Icons.keyboard_arrow_down) ,
// Array list of items
items: items.map((String items) {
return DropdownMenuItem(
value: items,
child: Text(items),
)i
}) . toList(),
// After selecting the desired option, it will
// change button value to selected value
onChanged: (String? newValue) {
setstate((){
dropdownvalue = newValue!;
});
},
),
),
大纲按钮ー 它类似于平面按钮,但它包含一个细长的灰色圆角矩形边框。它的轮廓边界由形状属性定义。
Container(
margin: cost EdgeInsets.all(25),
child: OutlineButton(
child: const Text (
"Outline Button",
style: TextStyle (fontSize: 20.0) ,
),
highlightedBorderColor: Colors.red,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15)) ,
onPressed: () {},
),),
按钮栏ー Flutter 提供了将按钮排列在一条或一行中的灵活性。ButtonBar widget 包含三个属性: 对齐、子级和 mainAxisSize。
ButtonBar(
children: [
FlatButton(
child: const Text ( 'Ok') ,
color: Colors.blue,
onPressed: () {
// To do
},
),
FlatButton(
child: const Text ('Cancel') ,
color: Colors. blue,
onPressed: () {
// To do
},
),
]
)
注意: FlatButton、 RaisedButton 和 OutlineButton widget 分别被 TextButton、 ElevatedButton 和 OutlinedButton 所取代。每个新的按钮类都有自己的主题: TextButtonTheme、 ElevatedButtonTheme 和 OutlinedButtonTheme。
了解更多信息。参观官方网站 https://docs.flutter.dev/release/breaking-changes/buttons
如果本文对你有帮助,请转发让更多的朋友阅读。
© 猫哥
微信 ducafecat
https://wiki.ducafecat.tech
https://video.ducafecat.tech
本文由 mdnice 多平台发布