現在、FlutterでAndroidアプリを開発しています。丸いボタンを追加するにはどうすればよいですか?
RaisedButtonウィジェットを使用できます。隆起ボタンウィジェットには、以下のスニペットに示すように利用できる形状プロパティがあります。
RaisedButton(
child: Text("Press Me"),
onPressed: null,
shape: RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0))
)
単に RaisedButton
を使用するか、または InkWell
を使用してカスタムボタンとonDoubleTap
、onLongPress
、 etc
などのプロパティを取得できます。
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),),),
),
),
splashColor
ウィジェットでhighlightColor
、InkWell
プロパティを使用する場合は、コンテナを装飾する(装飾プロパティを削除する)代わりに、 Material
ウィジェットをInkWell
ウィジェットの親として使用します。 理由をお読みください?こちら 。
RaisedButton を使用するだけです
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),
),
),
)
出力:
それを行うには多くの方法があります。ここにいくつかリストしています。
(1)RoundedRectangleBorder
の使用
RaisedButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
onPressed: () {},
child: Text("Button"),
)
(2)ClipRRect
の使用
ClipRRect(
borderRadius: BorderRadius.circular(40),
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(3)ClipOval
の使用
ClipOval(
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(4)ButtonTheme
の使用
ButtonTheme(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(5)StadiumBorder
の使用
RaisedButton(
shape: StadiumBorder(),
onPressed: () {},
child: Text("Button"),
)
おそらく、ドキュメントのこのページ (角を丸くする )をよく理解する必要があります。
このドキュメントでは、コンポーネントのスタイリングとCSSの同等のスタイリングを変更する方法を示しています(既に慣れている場合)。
以下のコードを使用して、グラデーションカラーの丸いボタンを作成できます。
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: () {
},
),
);
BoxDecoration
内のcolorプロパティに透明色を渡すことにより、透明な丸いボタンにこのコードを使用できます。例えば。 color: Colors.transparent
。また、このボタンはContainer
およびGestureDetector
ウィジェットのみを使用することに注意してください。
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,
),
),
)
],
),
),
),
)
FlatButtonおよびRaisedButtonにはshapeを使用できます。
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.red)),
shape:new RoundedRectangleBorder(borderRadius:new BorderRadius.circular(0.0)、side:BorderSide(color:Colors.red))、 .Row( mainAxisAlignment: MainAxisAlignment.end, children: <Widget>[ FlatButton( shape: new RoundedRectangleBorder( borderRadius: new 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: new RoundedRectangleBorder( borderRadius: new 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)), ), ], )
マテリアルアプリをメインウィジェットとして使用している場合は、いつでもマテリアルボタンを使用できます。
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),),
),
),
)