flutter dart

Crear un botón redondeado/botón con borde-radio en Flutter



dart (8)

Probablemente debería familiarizarse con esta página de los documentos en particular: redondeando las esquinas .

Los documentos le muestran cómo cambiar el estilo de un componente y el estilo equivalente en css, si ya está familiarizado con eso.

Actualmente estoy desarrollando una aplicación para Android en Flutter. ¿Cómo puedo añadir un botón redondeado?


Puede usar el siguiente código para hacer un botón redondeado con un color degradado.

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


Puede usar este código para un botón redondeado transparente pasando un color transparente a la propiedad de color dentro de BoxDecoration . p.ej. color: Colors.transparent . Además, tenga en cuenta que este botón utiliza solo los widgets Container y 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, ), ), ) ], ), ), ), )


Puede utilizar el widget RaisedButton. El widget de botón elevado tiene propiedades de forma que puede utilizar como se muestra en el siguiente fragmento de código.

new RaisedButton( child: new Text("Press Me"), onPressed: null, shape: new RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0)) )


Siempre puede usar el botón de material si está utilizando la aplicación Material como su 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),), ), ), )


Simplemente puede usar RaisedButton o InkWell para obtener un botón personalizado y también propiedades como onDoubleTap , onLongPress y InkWell .:

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 desea utilizar las propiedades InkWell , highlightColor en el widget de InkWell , use el widget de Material como elemento primario del widget de InkWell lugar de decorar el contenedor (eliminando la propiedad de decoración). Lee por que aqui


Simplemente puedes usar 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))), )

Salida:


Hay muchas maneras de hacerlo. Estoy enumerando pocos aquí.

(1) Utilizando RoundedRectangleBorder

RaisedButton( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), onPressed: () {}, child: Text("Button"), )

(2) Utilizando ClipRRect

ClipRRect( borderRadius: BorderRadius.circular(40), child: RaisedButton( onPressed: () {}, child: Text("Button"), ), )

(3) Utilizando ClipOval

ClipOval( child: RaisedButton( onPressed: () {}, child: Text("Button"), ), )

(4) Utilizando ButtonTheme

ButtonTheme( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), child: RaisedButton( onPressed: () {}, child: Text("Button"), ), )

(5) Usando StadiumBorder

RaisedButton( shape: StadiumBorder(), onPressed: () {}, child: Text("Button"), )