Ich entwickle gerade eine Android-App in Flutter. Wie kann ich eine abgerundete Schaltfläche hinzufügen?
Erstellen Sie in Flutter einen abgerundeten Button / Button mit Border-Radius
Kingsley CA
CopsOnRoad
Aktualisieren
Da die linksseitigen Schaltflächen jetzt veraltet sind, verwenden Sie die rechtsseitigen.
Deprecated --> Recommended
RaisedButton --> ElevatedButton
OutlineButton --> OutlinedButton
FlatButton --> TextButton
-
ElevatedButton
-
Verwenden
StadiumBorder
ElevatedButton( onPressed: () {}, child: Text('Button'), style: ElevatedButton.styleFrom(shape: StadiumBorder()), )
-
Verwenden
RoundedRectangleBorder
ElevatedButton( onPressed: () {}, child: Text('Button'), style: ElevatedButton.styleFrom( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), // <-- Radius ), ), )
-
Verwenden
CircleBorder
ElevatedButton( onPressed: () {}, child: Text('Button'), style: ElevatedButton.styleFrom( shape: CircleBorder(), padding: EdgeInsets.all(24), ), )
-
Verwenden
BeveledRectangleBorder
ElevatedButton( onPressed: () {}, child: Text('Button'), style: ElevatedButton.styleFrom( shape: BeveledRectangleBorder( borderRadius: BorderRadius.circular(12) ), ), )
OutlinedButton
-
Verwenden
StadiumBorder
OutlinedButton( onPressed: () {}, child: Text('Button'), style: OutlinedButton.styleFrom( shape: StadiumBorder(), ), )
-
Verwenden
RoundedRectangleBorder
OutlinedButton( onPressed: () {}, child: Text('Button'), style: OutlinedButton.styleFrom( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), )
-
Verwenden
CircleBorder
:OutlinedButton( onPressed: () {}, child: Text('Button'), style: OutlinedButton.styleFrom( shape: CircleBorder(), padding: EdgeInsets.all(24), ), )
-
Verwenden
BeveledRectangleBorder
OutlinedButton( onPressed: () {}, child: Text('Button'), style: OutlinedButton.styleFrom( shape: BeveledRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), )
TextButton
TextButton
funktioniert auch ähnlich ElevatedButton
Und OutlinedButton
jedoch können Sie die Formen nur sehen, wenn die Schaltfläche gedrückt wird.
-
RaisedButton ist veraltet und wird nicht mehr verwendet. Verwenden Sie die erhöhte Schaltfläche mit ButtonStyle, wie von Peter vorgeschlagen
– Ashutosh Singh
31. Mai 2021 um 16:24 Uhr
WSBT
Seit September 2020 Flutter 1.22.0:
Sowohl “RaisedButton” als auch “FlatButton” sind veraltet.
Die aktuellste Lösung ist die Verwendung neuer Schaltflächen:
1. ElevatedButton
:
Code:
ElevatedButton(
child: Text("ElevatedButton"),
onPressed: () => print("it's pressed"),
style: ElevatedButton.styleFrom(
primary: Colors.red,
onPrimary: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(32.0),
),
),
)
Nicht vergessen, es gibt auch eine .icon
Konstruktor zum einfachen Hinzufügen eines Symbols:
ElevatedButton.icon(
icon: Icon(Icons.thumb_up),
label: Text("Like"),
onPressed: () => print("it's pressed"),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(32.0),
),
),
)
2. OutlinedButton
:
Code:
OutlinedButton.icon(
icon: Icon(Icons.star_outline),
label: Text("OutlinedButton"),
onPressed: () => print("it's pressed"),
style: ElevatedButton.styleFrom(
side: BorderSide(width: 2.0, color: Colors.blue),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(32.0),
),
),
)
3. TextButton
:
Sie können immer verwenden TextButton
wenn Sie keinen Umriss oder keine Farbfüllung wünschen.
Sie können einfach verwenden 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),
),
),
)
Ausgang:
Mehr Info: RSCoder
Peter Mortensen
Sie können einfach verwenden RaisedButton
oder Sie können verwenden InkWell
um eine benutzerdefinierte Schaltfläche und auch Eigenschaften wie zu erhalten onDoubleTap
, onLongPress
, usw.:
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),),),
),
),
Wenn Sie die verwenden möchten splashColor
Und highlightColor
Eigenschaften in der InkWell
Widget, verwenden Sie das Material
Widget als übergeordnetes Element der InkWell
Widget, anstatt den Container zu dekorieren (Löschen der Dekorationseigenschaft). Lesen Sie hier, warum.
-
Wenn du willst
InkWell
Um die abgerundeten Ecken zu befestigen, müssen Sie hinzufügenborderRadius: BorderRadius.circular(10.0)
zumInkWell
Widget auch sonst wird es zu den Rändern des Begrenzungsrechtecks gehen.– Viktor Rendina
1. Juni 2019 um 20:36 Uhr
-
@VictorRendina Ich habe nach einer Möglichkeit gesucht, die Wellen abzurunden, danke für deinen Kommentar. Fügen Sie dies als separate Antwort auf Tintenfassfragen hinzu, da viele dies nicht erwähnen.
– Extremis II
22. Juni 2019 um 19:56 Uhr
Dies hier hat mehrere Möglichkeiten erwähnt mayytechno.com/rounded-button-flatter
– Ischan Fernando
26. Dezember 2019 um 9:13 Uhr