美文网首页
flutter按钮

flutter按钮

作者: wrootlflvl | 来源:发表于2019-06-22 15:28 被阅读0次

漂浮动作按钮FloatingActionButton

class FloatingActionButtonDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    final Widget _floatingActionButton = FloatingActionButton(
      onPressed: (){},
      child: Icon(Icons.add),
      elevation: 0.0, // 设置阴影
      backgroundColor: Colors.red,
//      shape: BeveledRectangleBorder( // 设置按钮形状
//        borderRadius: BorderRadius.circular(30.0)
//      ),
    );
    // extended创建的漂浮动作按钮
    final _floatingActionButtonExtended = FloatingActionButton.extended(
      onPressed: (){},
      icon: Icon(Icons.add),
      label: Text('Add'),
    );

    return Scaffold(
      appBar: AppBar(
        title: Text('FloatingActionButtonDemo'),
        elevation: 0.0,
      ),
      // 漂浮动作按钮
      floatingActionButton: _floatingActionButton,
      // 漂浮动作按钮默认会在底部工具栏上面,可以通过下面方法调整漂浮动作按钮的位置
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      bottomNavigationBar: BottomAppBar(
        child: Container(height: 50,),
        shape: CircularNotchedRectangle(), // 设置漂浮动作按钮与底部工具栏之间的切口
      ),
    );
  }
}

文字按钮FlatButton

final Widget flatButtonDemo = Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 文字按钮
        FlatButton(
          onPressed: (){},
          child: Text('Button'),
          splashColor: Colors.blue, // 设置溅墨效果的颜色
          textColor: Colors.indigo, // 设置文字的颜色
        ),
        FlatButton.icon(
          onPressed: (){},
          icon: Icon(Icons.add), // 给文字按钮添加图标,图标在文字左侧
          label: Text('Button'),
          splashColor: Colors.blue, // 设置溅墨效果的颜色
          textColor: Colors.indigo, // 设置文字的颜色
        ),
      ],
    );

RaisedButton

// RaisedButton会带背景颜色和阴影效果
    final Widget raisedButtonDemo = Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        RaisedButton(
          onPressed: (){},
          child: Text('Button'),
          splashColor: Colors.blue, // 设置溅墨效果的颜色
          color: Theme.of(context).primaryColor, // 设置按钮背景颜色
          textColor: Colors.indigo, // 设置文字的颜色
          elevation: 10.0, // 设置阴影效果
          textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
        ),
        SizedBox(width: 16.0,),
        // 在主题里设置按钮的样式
        Theme(
          data: Theme.of(context).copyWith(
            buttonColor: Colors.orange,
            buttonTheme: ButtonThemeData(
              textTheme: ButtonTextTheme.primary,
              // 斜角矩形
//                      shape: BeveledRectangleBorder(
//                        borderRadius: BorderRadius.circular(5.0),
//                      ),
              // 圆角
              shape: StadiumBorder(),
            ),
          ),
          child: RaisedButton.icon(
            onPressed: (){},
            icon: Icon(Icons.add),
            label: Text('Button'),
            splashColor: Colors.blue, // 设置溅墨效果的颜色
            textColor: Colors.indigo, // 设置文字的颜色
          ),
        ),
      ],
    );

描边按钮OutlineButton

final Widget outlineButtonDemo = Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 描边按钮
        OutlineButton(
          onPressed: (){},
          child: Text('Button'),
          splashColor: Colors.blue, // 设置溅墨效果的颜色
          color: Theme.of(context).primaryColor, // 设置按钮背景颜色
          textColor: Colors.indigo, // 设置文字的颜色
          textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
          borderSide: BorderSide(color: Colors.indigo), // 设置描边颜色
          highlightedBorderColor: Colors.blue, // 设置高亮状态描边的颜色
        ),
        SizedBox(width: 16.0,),
        // 在主题里设置按钮的样式
        Theme(
          data: Theme.of(context).copyWith(
            buttonColor: Colors.orange,
            buttonTheme: ButtonThemeData(
              textTheme: ButtonTextTheme.primary,
              // 斜角矩形
//                      shape: BeveledRectangleBorder(
//                        borderRadius: BorderRadius.circular(5.0),
//                      ),
              // 圆角
              shape: StadiumBorder(),
            ),
          ),
          child: OutlineButton.icon(
            onPressed: (){},
            icon: Icon(Icons.add),
            label: Text('Button'),
            splashColor: Colors.blue, // 设置溅墨效果的颜色
            textColor: Colors.indigo, // 设置文字的颜色
          ),
        ),
      ],
    );

按钮容器Container:使按钮有固定宽度

final Widget fixedWidthButton = Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 给按钮固定宽度就将按钮放在Containner中
        Container(
          width: 160,
          child: OutlineButton(
            onPressed: (){},
            child: Text('Button'),
            splashColor: Colors.blue, // 设置溅墨效果的颜色
            color: Theme.of(context).primaryColor, // 设置按钮背景颜色
            textColor: Colors.indigo, // 设置文字的颜色
            textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
            borderSide: BorderSide(color: Colors.indigo), // 设置描边颜色
            highlightedBorderColor: Colors.blue, // 设置高亮状态描边的颜色
          ),
        )
      ],
    );

按钮容器Expanded:使按钮占满可用宽度

final Widget expandedButton = Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 使按钮占满可用宽度
        Expanded(
          child: OutlineButton(
            onPressed: (){},
            child: Text('Button'),
            splashColor: Colors.blue, // 设置溅墨效果的颜色
            color: Theme.of(context).primaryColor, // 设置按钮背景颜色
            textColor: Colors.indigo, // 设置文字的颜色
            textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
            borderSide: BorderSide(color: Colors.indigo), // 设置描边颜色
            highlightedBorderColor: Colors.blue, // 设置高亮状态描边的颜色
          ),
        ),
        SizedBox(width: 16,),
        Expanded(
          flex: 2, // 设置按钮宽度的占比
          child: OutlineButton(
            onPressed: (){},
            child: Text('Button'),
            splashColor: Colors.blue, // 设置溅墨效果的颜色
            color: Theme.of(context).primaryColor, // 设置按钮背景颜色
            textColor: Colors.indigo, // 设置文字的颜色
            textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
            borderSide: BorderSide(color: Colors.indigo), // 设置描边颜色
            highlightedBorderColor: Colors.blue, // 设置高亮状态描边的颜色
          ),
        ),
      ],
    );

按钮容器ButtonBar:可以使一组按钮等边距横排显示

final Widget buttonBarDemo = Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Theme(
          data: Theme.of(context).copyWith(
              buttonTheme: ButtonThemeData(
                padding: EdgeInsets.symmetric(horizontal: 32.0),
              )
          ),
          child: ButtonBar( // 一组带边距的横排显示按钮,边距的值会根据按钮主题里面设置的值来决定
            children: <Widget>[
              OutlineButton(
                onPressed: (){},
                child: Text('Button'),
                splashColor: Colors.blue, // 设置溅墨效果的颜色
                color: Theme.of(context).primaryColor, // 设置按钮背景颜色
                textColor: Colors.indigo, // 设置文字的颜色
                textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
                borderSide: BorderSide(color: Colors.indigo), // 设置描边颜色
                highlightedBorderColor: Colors.blue, // 设置高亮状态描边的颜色
              ),
              OutlineButton(
                onPressed: (){},
                child: Text('Button'),
                splashColor: Colors.blue, // 设置溅墨效果的颜色
                color: Theme.of(context).primaryColor, // 设置按钮背景颜色
                textColor: Colors.indigo, // 设置文字的颜色
                textTheme: ButtonTextTheme.primary, // 设置按钮文字颜色
                borderSide: BorderSide(color: Colors.indigo), // 设置描边颜色
                highlightedBorderColor: Colors.blue, // 设置高亮状态描边的颜色
              ),
            ],
          ),
        ),
      ],
    );

下拉菜单按钮:PopupMenuButton

class PopupMenuDemo extends StatefulWidget {
  @override
  _PopupMenuDemoState createState() => _PopupMenuDemoState();
}

class _PopupMenuDemoState extends State<PopupMenuDemo> {
  String _currentMenuItem = 'Home';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('PopupMenuDemo'), elevation: 0.0,),
      body: Container(
        padding: EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(_currentMenuItem),
                PopupMenuButton(
                  onSelected: (value) {
                    setState(() {
                      _currentMenuItem = value;
                    });
                  },
                  itemBuilder: (BuildContext context) => [
                    PopupMenuItem(child: Text('Home'), value: 'Home',),
                    PopupMenuItem(child: Text('Discover'), value: 'Discover',),
                    PopupMenuItem(child: Text('Community'), value: 'Community',),
                  ],
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}

相关文章

网友评论

      本文标题:flutter按钮

      本文链接:https://www.haomeiwen.com/subject/pzfvqctx.html