Je développe actuellement une application Android dans Flutter. Comment puis-je ajouter un bouton arrondi, semblable à celui-ci? http://pertamini.co/rounded-button/
Vous pouvez utiliser le widget RaisedButton. Le bouton Bouton en relief a une propriété de forme que vous pouvez utiliser comme indiqué dans l'extrait ci-dessous.
new RaisedButton(
child: new Text("Press Me"),
onPressed: null,
shape: new RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0))
)
Vous pouvez simplement utiliser RaisedButton
ou vous pouvez utiliser InkWell
pour obtenir un bouton personnalisé ainsi que des propriétés telles que onDoubleTap
, onLongPress
et 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),),),
),
),
Si vous souhaitez utiliser les propriétés splashColor
, highlightColor
dans le widget InkWell
, utilisez Material
widget en tant que parent du widget InkWell
au lieu de décorer le conteneur (suppression de la propriété de décoration). Lire pourquoi? ici .
Il y a plusieurs façons de le faire. J'en énumère quelques-uns ici.
(1) Utilisation de RoundedRectangleBorder
RaisedButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
onPressed: () {},
child: Text("Button"),
)
(2) Utilisation de ClipRRect
ClipRRect(
borderRadius: BorderRadius.circular(40),
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(3) Utilisation de ClipOval
ClipOval(
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(4) Utilisation de ButtonTheme
ButtonTheme(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(5) Utilisation de StadiumBorder
RaisedButton(
shape: StadiumBorder(),
onPressed: () {},
child: Text("Button"),
)
Vous pouvez utiliser le code ci-dessous pour créer un bouton arrondi avec une couleur en dégradé.
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: () {
},
),
);
Vous devriez probablement vous familiariser avec cette page de la documentation en particulier: coins arrondis .
La documentation vous montre comment modifier le style d'un composant et le style équivalent en css, si cela vous est déjà familier.
Vous pouvez utiliser ce code pour un bouton arrondi transparent en transmettant une couleur transparente à la propriété color située dans BoxDecoration
. par exemple. color: Colors.transparent
. Notez également que ce bouton utilise uniquement les widgets Container
et 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,
),
),
)
],
),
),
),
)
Vous pouvez utiliser la forme pour FlatButton et RaisedButton.
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.red)),
forme: nouvelle RoundedRectangleBorder (borderRadius: nouvelle 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)), ), ], )
Vous pouvez toujours utiliser le bouton Matériau si vous utilisez l’application Matériau comme widget principal.
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),),
),
),
)
Vous pouvez simplement utiliser 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))),
)