Flutter 中按鈕這種 widget 種類但是很多:less
RaisedButton
- 凸起按鈕,帶陰影FlatButton
- 扁平按鈕,不帶陰影OutlineButton
- 自帶邊框的按鈕,不能設置背景色color
MaterialButton
- MD 風格的按鈕,能夠設置寬高值,是 Flutter 中全部按鈕的基類IconButton
- 在 Icon
基礎上加上點擊事件,不能設置背景色和邊框FloatingActionButton
- 懸浮按鈕MaterialButton
是 Flutter 中全部 Button
類型的基類,MaterialButton
的參數再其餘 Button
中都是通用的,咱們簡單看一下:ide
const MaterialButton({
Key key,
@required this.onPressed, // 點擊事件,必須給值,寫null的話表示不可用
this.onHighlightChanged,
this.textTheme, //默認文字樣式
this.textColor, // 文字顏色
this.disabledTextColor, // 不可用時文字顏色
this.color, // 背景色
this.disabledColor, // 按鈕被禁用時的文字顏色
this.highlightColor, // 按鈕的水波紋亮起的顏色,點擊以後的顏色,注意這個顏色點擊以後就一直在這裏了,不是那種一瞬間顯示
this.splashColor, // 波浪紋顏色
this.colorBrightness, // 按鈕主題高亮
this.elevation, // Z軸、陰影,正常應該小於 5
this.highlightElevation, // 按鈕高亮時的下面的陰影長度
this.disabledElevation,
this.padding,
this.shape, // 按鈕樣式
this.clipBehavior = Clip.none,
this.materialTapTargetSize,
this.animationDuration,
this.minWidth,
this.height,
this.child, // 按鈕內部widget,通常都是text
})
複製代碼
textTheme
系統默認提供的配色方案:ButtonTextTheme.normal:
ButtonTextTheme.accent:
ButtonTextTheme.primary:
shape
提供了4種預設的按鈕形狀:BeveledRectangleBorder
CircleBorder
RoundedRectangleBorder
StadiumBorder
RaisedButton
- 凸起按鈕,帶陰影的那種ui
class DD extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: () {
print("AAAAAA");
},
color: Colors.blueAccent,
child: Text(
"浮動按鈕",
style: TextStyle(fontSize: 30),
),
textColor: Colors.white,
elevation: 10,
disabledColor: Colors.grey,
padding: EdgeInsets.all(20),
splashColor: Colors.red,
shape: BeveledRectangleBorder(
borderRadius: BorderRadius.circular(10),
));
}
}
複製代碼
FlatButton
- 扁平按鈕,不能帶陰影,其餘和 RaisedButton 同樣this
class DD extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FlatButton(
onPressed: () {
print("AAAAAA");
},
color: Colors.blueAccent,
child: Text(
"浮動按鈕",
style: TextStyle(fontSize: 30),
),
textColor: Colors.white,
disabledColor: Colors.grey,
padding: EdgeInsets.all(20),
splashColor: Colors.red,
shape: BeveledRectangleBorder(
borderRadius: BorderRadius.circular(10),
));
}
}
複製代碼
OutlineButton
- 自帶邊框的按鈕,不能設置背景色color
spa
class DD extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new OutlineButton(
onPressed: () {
print(BorderStyle.values);
},
borderSide: BorderSide(
color: Colors.blue,
width: 2.0,
style: BorderStyle.solid
),
child: new Text('pressed'),
);
}
}
複製代碼
MaterialButton
- MD 風格的按鈕,屬性同上,可是能夠設置寬高值設計
class DD extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialButton(
minWidth: 200,
height: 80,
color: Colors.blue,
textColor: Colors.white,
onPressed: () {
print("AAAAAA");
},
child: new Text('button'),
);
}
}
複製代碼
IconButton
- 在 Icon
基礎上加上點擊事件,不能設置背景色和邊框,圖就不必放了,child
除了能夠接受Icon
以外,還能夠接受RichText
3d
class DD extends StatelessWidget {
@override
Widget build(BuildContext context) {
return IconButton(
onPressed: () {
print("AAAAAA");
},
color: Colors.red,
iconSize: 50,
icon: new Icon(Icons.star),
padding: const EdgeInsets.all(12.0)
);
}
}
複製代碼
FloatingActionButton
這個你們都是耳熟能詳了吧,若是有時間,能夠看看:FlatButton的Material設計理念,這是官方指導,FloatingActionButton
全部典型應用案例都在裏面了,雖然說是英文的,可是你們看圖就知道咋回事了code
圖隨便找的 component
child
很隨意,能夠是 Text、icon, etctooltip
長按提示foregroundColor
child 沒有設置顏色時生效backgroundColor
背景色elevation
陰影highlightElevation
按下時陰影shape
形狀mini
是小圖標仍是大圖標@override
Widget build(BuildContext context) {
return FloatingActionButton(
child: Icon(Icons.adb),
tooltip: "tips",
backgroundColor: Colors.blueAccent,
foregroundColor: Colors.amberAccent,
onPressed: (){
print("tips!");
},
);
}
複製代碼