web-dev-qa-db-fra.com

Créer un bouton/bouton arrondi avec un rayon de bordure dans Flutter

Je développe actuellement une application Android dans Flutter. Comment puis-je ajouter un bouton arrondi, semblable à celui-ci? http://pertamini.co/rounded-button/

21

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))
        )
78
dhuma1981

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),),),
  ),
),

 enter image description here

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 .

14
Blasanka

enter image description here

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"),
)
11
CopsOnRoad

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: () {

            },
          ),
        );
3
Tahseen Quraishi

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.

2
Devin Fields

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,
                            ),
                        ),
                    )
                ],
            ),
        ),
    ),
)

Transaparent Background Button

2
mjhansen3

Vous pouvez utiliser la forme pour FlatButton et RaisedButton.

 shape: new RoundedRectangleBorder(
        borderRadius: new BorderRadius.circular(18.0),
        side: BorderSide(color: Colors.red)),

enter image description here forme: nouvelle RoundedRectangleBorder (borderRadius: nouvelle BorderRadius.circular (0.0), side: BorderSide (color: Colors.red)), enter image description here .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)), ), ], )

1
Abror Esonaliyev

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),),
    ),
  ),
)
1
Matias

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))),
       )
0
Rahul