文章目录

  • 一.DropdownButton下拉按钮
  • DropdownMenuItem
  • 二.FlatButton扁平按钮
  • 三、FloatingActionButton悬浮按钮
  • 四.IconButton图标按钮
  • 六/RaisedButton背景突出按钮
  • 七、OutlineButton边框按钮


一.DropdownButton下拉按钮

类型T是每个下拉菜单项代表的值的类型,所有的条目类型一致,onChanged回调应更新定义下拉列表值的状态变量。 它还应该调用State.setState来使用新值重建下拉列表

disabledHint→小部件
禁用下拉菜单时显示的消息
elevation 打开菜单时放置菜单的Z坐标
hint 如果value为null,则显示
icon→小部件
用于下拉按钮图标的小部件
iconDisabledColor→颜色
如果禁用了此按钮,即onChanged为null,则该图标的任何Icon后代的颜色
iconEnabledColor→颜色
如果启用了此按钮,即定义了onChanged,则该图标的任何Icon后代的颜色
iconSize→两倍
下拉按钮的向下箭头图标按钮要使用的大小
isDense→布尔
降低按钮的高度
isExpanded→布尔
将下拉菜单的内部内容设置为水平填充其父对象
items → List<DropdownMenuItem >
用户可以选择的项目列表
onChanged→ValueChanged
当用户选择一个项目时调用
style →TextStyle
下拉按钮和点击该按钮时出现的下拉菜单中用于文本的文本样式。
underline →小部件
用于绘制下拉按钮下划线的小部件
value →T
当前选定的DropdownMenuItem的值;如果未选择任何项,则为null。如果value为null,则弹出菜单,就像选择了第一项一样

DropdownMenuItem

主要应用于DropdownButton的项目。
child →小部件
树中此窗口小部件下方的窗口小部件。 […]
value →T
如果用户选择此菜单项,则返回的值。

class MyBox extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: _MyBoxHomePage(),
    );
  }
}

class _MyBoxHomePage extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return BoxHomePage();
  }

}

class BoxHomePage extends State<_MyBoxHomePage> {


  List<DropdownMenuItem> _items = List.generate(4, (i)=>DropdownMenuItem(
    value: "ITEM ${i}",
    child: Text("ITEM ${i}"),
  ));

  String _selectValue = "ITEM 0";
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Box组件"),
      ),
      body: Center(
        child: DropdownButton(
          hint: Text("请选择"),
          value: _selectValue,
          items: _items,
          //下拉框字体颜色
          style: TextStyle(color: Colors.deepPurple),
          underline: Container(
            height: 2,
            color: Colors.deepPurpleAccent,
          ),
          //onChanged的Function必须是泛型,如果写成(String value)就会报错
          onChanged: (T){
            setState(() {
                _selectValue = T;
            });
          },

        )
      )
      
    );
  }

  @override
  State<StatefulWidget> createState() {
    return null;
  }
}

二.FlatButton扁平按钮

一定要加上
onPressed: () {
//
},
否则color等属性不生效
child中的控件中如果有自己的style并且定义了文字颜色就会覆盖FlatButton自己的textcolor属性
animationDuration→持续时间
定义shape and elevation动画更改的持续时间
clipBehavior→剪辑
根据此选项,内容将被裁剪(或不裁剪)
color → Color
当按钮处于默认(未按下,启用)状态时,按钮的颜色

FlatButton(…)

一个简单的text Button

2023 android studio Flutter按钮位置 flutter 开关按钮_ico


FlatButton.icon(…)

Create a text button from a pair of widgets that serve as the button’s icon and label,图标+文字的按钮

2023 android studio Flutter按钮位置 flutter 开关按钮_ide_02

class _MyButtonHomePage extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Button"),
      ),
      body: Column(

        children: <Widget>[
          /*1/FlatButton扁平按钮------*/
          FlatButton(
            color: Colors.red,
            textColor: Colors.amberAccent,
            colorBrightness: Brightness.dark,
            focusColor: Colors.blueGrey,
            autofocus: true,
            //点击时的颜色
            highlightColor: Colors.blue,

            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(5.0),
            ),
            child: Text(
              "FlatButton",
              style: TextStyle(
                color: Colors.white,
                fontSize: 20,
              ),
            ),
            //一定要加上onPressed,否则color等属性失效
            onPressed: (){

            },
            //colorBrightness: Brightness.light,
          ),


        ],
      ),
    );
  }
}

三、FloatingActionButton悬浮按钮

每个屏幕最多只能使用一个浮动操作按钮。 浮动操作按钮应用于积极的操作,例如“创建”,“共享”或“导航”。 (如果在一个Route中使用了多个浮动操作按钮,则请确保每个按钮都有一个唯一的heroTag,否则将引发异常。)

如果onPressed回调为null,则该按钮将被禁用,并且不会对触摸做出反应。 不建议禁用浮动操作按钮,因为不会向用户指示该按钮已被禁用。 如果禁用浮动操作按钮,请考虑更改backgroundColor。

backgroundColor → Color
The color to use when filling the button.
foregroundColor → Color
The default icon and text color.
heroTag → Object
The tag to apply to the button’s Hero widget
isExtended → bool
True if this is an “extended” floating action button.
tooltip → String
Text that describes the action that will occur when the button is pressed.

FloatingActionButton

Creates a circular floating action button.,只有一个icon的图标

2023 android studio Flutter按钮位置 flutter 开关按钮_ico_03


FloatingActionButton.extended(…)

Creates a wider StadiumBorder-shaped floating action button with an optional icon and a label, icon形容图标,label形容文字

2023 android studio Flutter按钮位置 flutter 开关按钮_ide_04

FloatingActionButton(
            onPressed: () {
              /**/
            },
            backgroundColor: Colors.red,
            child: Icon(Icons.add_a_photo),
            //长按按钮时显示
            tooltip: "点了FloatingActionButton",
            isExtended: true,
          ),

          FloatingActionButton(
            onPressed: () {
              /**/
            },
            backgroundColor: Colors.deepPurpleAccent,
            child: Icon(Icons.add_a_photo),
            //长按按钮时显示
            tooltip: "点了FloatingActionButton",
            isExtended: true,
            //方形的形状
           /* shape: Border.all(
              width: 2.0,
              color: Colors.white,
              style: BorderStyle.solid,
            ),*/
           shape: RoundedRectangleBorder(
             borderRadius: BorderRadius.only(
               topLeft: Radius.circular(5),
               topRight : Radius.circular(5),
               bottomLeft:  Radius.circular(5),
               bottomRight:  Radius.circular(5),
             ),
             side: BorderSide(
               color: Colors.white,
               width: 2.0,
               style: BorderStyle.solid,
             ),
           ),
          ),

          FloatingActionButton.extended(
            onPressed: (){
              /**/
            },
            backgroundColor: Colors.blue,
            foregroundColor: Colors.grey,
            icon: Icon(Icons.directions_walk),
            label: Text("带图标的FloatingActionButton",style: TextStyle(color: Colors.white),),

          )

效果图:

2023 android studio Flutter按钮位置 flutter 开关按钮_sed_05

四.IconButton图标按钮

只有一个图标的按钮,一般常用语AppBar.actions

IconButton(
            icon: Icon(Icons.title),
            onPressed: (){
              /**/
            },
            //提示信息
            tooltip: "长按有提示:文字",
            //图标大小
            iconSize: 30,
            //图标颜色
            color: Colors.deepPurpleAccent,
            //长按时颜色
            highlightColor: Colors.red,
            //点击时的颜色:墨汁飞溅
            splashColor: Colors.amberAccent,
            //对其方式,这个对齐指的是在父容器中的对齐位置
            alignment: Alignment.center,
          ),

效果图:

2023 android studio Flutter按钮位置 flutter 开关按钮_Flutter_06

六/RaisedButton背景突出按钮

RaisedButton.icon(…)
创建文字+图标的按钮

RaisedButton(
            child: Text("RaisedButton"),
          ),

          RaisedButton(
            onPressed: (){
              /**/
            },
            child: Text("RaisedButton"),
          ),

          RaisedButton(
            onPressed: (){
              /**/
            },
            child: Text("RaisedButton"),
            textColor: Colors.white,
            color: Colors.red,

          ),

2023 android studio Flutter按钮位置 flutter 开关按钮_ide_07

七、OutlineButton边框按钮

边框形状由shape定义,边框外观由 borderSide、disabledBorderColor, and highlightedBorderColor。
定义。
默认情况下,边框是一个1像素宽的灰色圆角矩形,当按下或禁用按钮时,边框不会更改。默认情况下,按钮的背景是透明的。
如果onPressed回调为null,则该按钮将被禁用,并且默认情况下将类似于DisabledColor中的平面按钮

默认情况下,按钮的highlightElevation定义为0.0(无阴影),它定义按下按钮时投影的大小。
如果将highlightElevation的值设置为大于0.0,则该按钮将成为RaisedButton和FlatButton之间的交叉:
带边框的按钮,其高度增加,并且在按下按钮时其背景变得不透明。

如果您希望水龙头具有墨水飞溅效果,但又不想使用按钮,请考虑直接使用InkWell。

大纲按钮的最小大小为88.0 x 36.0,可以用ButtonTheme覆盖

OutlineButton.icon
带图标的按钮

特殊属性:
borderSide → BorderSide
Defines the color of the border when the button is enabled but not pressed, and the border outline’s width and style in general. […]
disabledBorderColor → Color
The outline border’s color when the button is not enabled. […]
highlightedBorderColor → Color
The outline border’s color when the button is enabled and pressed

borderSide→边界边
定义启用按钮但未按下时的边框颜色,以及边框轮廓的宽度和样式。 […]
disabledBorderColor→颜色
未启用按钮时轮廓边框的颜色。 […]
高亮边框颜色→颜色
启用并按下按钮时轮廓边框的颜色