Create a rounded button / button with border-radius in Flutter
我目前正在Flutter中开发一个Android应用。 如何添加圆形按钮?
1.解决方案摘要
您可以将
2.圆形按钮
1 2 3 4 | shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(18.0), side: BorderSide(color: Colors.red) ), |
方形按钮
1 2 3 4 | shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(0.0), side: BorderSide(color: Colors.red) ), |
完整的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Row( mainAxisAlignment: MainAxisAlignment.end, children: <Widget>[ FlatButton( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(18.0), side: BorderSide(color: Colors.red)), color: Colors.white, textColor: Colors.red, padding: EdgeInsets.all(8.0), onPressed: () {}, child: Text( "Add to Cart".toUpperCase(), style: TextStyle( fontSize: 14.0, ), ), ), SizedBox(width: 10), RaisedButton( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(18.0), side: BorderSide(color: Colors.red)), onPressed: () {}, color: Colors.red, textColor: Colors.white, child: Text("Buy now".toUpperCase(), style: TextStyle(fontSize: 14)), ), ], ) |
您可以使用RaisedButton窗口小部件。凸起按钮小部件具有shape属性,您可以利用它,如下面的代码片段所示。
1 2 3 4 5 | RaisedButton( child: Text("Press Me"), onPressed: null, shape: RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0)) ) |
有很多方法可以做到这一点。我在这里列出一些。
(1)使用
1 2 3 4 5 | RaisedButton( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), onPressed: () {}, child: Text("Button"), ) |
(2)使用
1 2 3 4 5 6 7 | ClipRRect( borderRadius: BorderRadius.circular(40), child: RaisedButton( onPressed: () {}, child: Text("Button"), ), ) |
(3)使用
1 2 3 4 5 6 | ClipOval( child: RaisedButton( onPressed: () {}, child: Text("Button"), ), ) |
(4)使用
1 2 3 4 5 6 7 | ButtonTheme( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), child: RaisedButton( onPressed: () {}, child: Text("Button"), ), ) |
(5)使用
1 2 3 4 5 | RaisedButton( shape: StadiumBorder(), onPressed: () {}, child: Text("Button"), ) |
您可以简单地使用RaisedButton
1 2 3 4 5 6 7 8 9 10 11 12 | Padding( padding: EdgeInsets.only(left: 150.0, right: 0.0), child: RaisedButton( textColor: Colors.white, color: Colors.black, child: Text("Search"), onPressed: () {}, shape: new RoundedRectangleBorder( borderRadius: new BorderRadius.circular(30.0), ), ), ) |
输出:
更多信息:RSCoder
您可以简单地使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | new InkWell( onTap: () => print('hello'), child: new Container( //width: 100.0, height: 50.0, decoration: new BoxDecoration( color: Colors.blueAccent, border: new Border.all(color: Colors.white, width: 2.0), borderRadius: new BorderRadius.circular(10.0), ), child: new Center(child: new Text('Click Me', style: new TextStyle(fontSize: 18.0, color: Colors.white),),), ), ), |
如果要在
您可以使用以下代码制作带有渐变颜色的圆形按钮。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Container( width: 130.0, height: 43.0, decoration: BoxDecoration( borderRadius: BorderRadius.circular(30.0), gradient: LinearGradient( // Where the linear gradient begins and ends begin: Alignment.topRight, end: Alignment.bottomLeft, // Add one stop for each color. Stops should increase from 0 to 1 stops: [0.1, 0.9], colors: [ // Colors are easy thanks to Flutter's Colors class. Color(0xff1d83ab), Color(0xff0cbab8), ], ), ), child: FlatButton( child: Text( 'Sign In', style: TextStyle( fontSize: 16.0, fontFamily: 'Righteous', fontWeight: FontWeight.w600, ), ), textColor: Colors.white, color: Colors.transparent, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)), onPressed: () { }, ), ); |
通过将透明颜色传递给
例如。
另外,请注意,此按钮仅使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | Container( height: 50.0, child: GestureDetector( onTap: () {}, child: Container( decoration: BoxDecoration( border: Border.all( color: Color(0xFFF05A22), style: BorderStyle.solid, width: 1.0, ), color: Colors.transparent, borderRadius: BorderRadius.circular(30.0), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Center( child: Text( "BUTTON", style: TextStyle( color: Color(0xFFF05A22), fontFamily: 'Montserrat', fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: 1, ), ), ) ], ), ), ), ) |
您可能应该特别熟悉文档的此页面:圆角。
如果您已经熟悉了文档,那么该文档将向您展示如何在CSS中更改组件的样式和等效样式。
如果有人在寻找完整的圆形按钮,那我就没有实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Center( child: SizedBox.fromSize( size: Size(80, 80), // button width and height child: ClipOval( child: Material( color: Colors.pink[300], // button color child: InkWell( splashColor: Colors.yellow, // splash color onTap: () {}, // button pressed child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Icon(Icons.linked_camera), // icon Text("Picture"), // text ], ), ), ), ), ), ) |
1 2 3 4 5 6 | RaisedButton( child: Text("Button"), onPressed: (){}, shape: RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0), side: BorderSide(color: Colors.red)) ) |
这是您问题的代码,您只需要在boxdecoration中使用具有边框半径的简单容器即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | new Container( alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(15.0)), color: Colors.blue, ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Padding( padding: const EdgeInsets.all(10.0), child: new Text( "Next", style: new TextStyle( fontWeight: FontWeight.w500, color: Colors.white, fontSize: 15.0, ), ), ), ], ), ), |
这是另一种解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Container( height: MediaQuery.of(context).size.height * 0.10, width: MediaQuery.of(context).size.width, child: ButtonTheme( minWidth: MediaQuery.of(context).size.width * 0.75, child: RaisedButton( shape: RoundedRectangleBorder( borderRadius: new BorderRadius.circular(25.0), side: BorderSide(color: Colors.blue)), onPressed: () async { // do something }, color: Colors.red[900], textColor: Colors.white, child: Padding( padding: const EdgeInsets.all(8.0), child: Text("Button Text, style: TextStyle(fontSize: 24)), ), ), ), ), |
要在您的Button中使用任何形状,请确保执行Button小部件中的所有代码
1 2 3 | **shape: RoundedRectangleBorder( borderRadius: new BorderRadius.circular(18.0), side: BorderSide(color: Colors.red) ),** |
如果要使其成为Square使用`BorderRadius.circular(0.0),它将自动变为Square
像这样的按钮
这是给定UI屏幕的所有源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | Scaffold( backgroundColor: Color(0xFF8E44AD), body: new Center( child: Column( children: <Widget>[ Container( margin: EdgeInsets.fromLTRB(90, 10, 20, 0), padding: new EdgeInsets.only(top: 92.0), child: Text( "Currency Converter", style: TextStyle( fontSize: 48, fontWeight: FontWeight.bold, color: Colors.white, ), ), ), Container( margin: EdgeInsets.only(), padding: EdgeInsets.all(25), child: TextFormField( decoration: new InputDecoration( filled: true, fillColor: Colors.white, labelText:"Amount", border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), ), ), Container( padding: EdgeInsets.all(25), child: TextFormField( decoration: new InputDecoration( filled: true, fillColor: Colors.white, labelText:"From", border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), ), ), Container( padding: EdgeInsets.all(25), child: TextFormField( decoration: new InputDecoration( filled: true, fillColor: Colors.white, labelText:"To", border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), )), ), ), SizedBox(height: 20.0), MaterialButton( height: 58, minWidth: 340, shape: RoundedRectangleBorder( borderRadius: new BorderRadius.circular(12)), onPressed: () {}, child: Text( "CONVERT", style: TextStyle( fontSize: 24, color: Colors.black, ), ), color: Color(0xFFF7CA18), ), ], ), ), ), ); |
In Flutter
Container() widget use for styling your widget.UsingContainer() widget you can set border or rounded corner of any widget
如果要设置任何类型的样式并设置装饰,请将其放在
1 2 3 4 5 6 7 8 9 | Container( width: 100, padding: EdgeInsets.all(10), alignment: Alignment.center, decoration: BoxDecoration( color: Colors.blueAccent, borderRadius: BorderRadius.circular(30)), // make rounded corner child: Text("Click"), ) |
如果将Material App用作主窗口小部件,则始终可以使用material按钮。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Padding( padding: EdgeInsets.symmetric(vertical: 16.0), child: Material( borderRadius: BorderRadius.circular(30.0),//Set this up for rounding corners. shadowColor: Colors.lightBlueAccent.shade100, child: MaterialButton( minWidth: 200.0, height: 42.0, onPressed: (){//Actions here//}, color: Colors.lightBlueAccent, child: Text('Log in', style: TextStyle(color: Colors.white),), ), ), ) |