ฉันกำลังพัฒนาแอพ Android ใน Flutter ฉันจะเพิ่มปุ่มโค้งมนได้อย่างไร
ฉันกำลังพัฒนาแอพ Android ใน Flutter ฉันจะเพิ่มปุ่มโค้งมนได้อย่างไร
คำตอบ:
1. สรุปโซลูชัน
คุณสามารถใช้shape
สำหรับการและFlatButton
RaisedButton
2. ปุ่มโค้งมน
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(color: Colors.red)
),
ปุ่มสแควร์
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(0.0),
side: BorderSide(color: Colors.red)
),
ตัวอย่างที่สมบูรณ์
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
FlatButton(
shape: RoundedRectangleBorder(
borderRadius: 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: RoundedRectangleBorder(
borderRadius: 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)),
),
],
)
คุณสามารถใช้วิดเจ็ต RaisedButton เครื่องมือปุ่มยกมีคุณสมบัติรูปร่างซึ่งคุณสามารถใช้ตามที่แสดงในตัวอย่างด้านล่าง
RaisedButton(
child: Text("Press Me"),
onPressed: null,
shape: 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"),
)
คุณสามารถใช้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),
),
),
)
เอาท์พุท:
ข้อมูลเพิ่มเติม: RSCoder
คุณก็สามารถใช้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
เครื่องมือแทนการตกแต่งภาชนะ (ลบคุณสมบัติตกแต่ง) อ่านทำไม ที่นี่
InkWell
จะคลิปไปที่มุมโค้งมนแล้วคุณจะต้องเพิ่มborderRadius: BorderRadius.circular(10.0)
ไปInkWell
ยังวิดเจ็ตยังมิฉะนั้นมันจะไปที่ขอบของสี่เหลี่ยมผืนผ้าขอบเขต
คุณสามารถใช้รหัสด้านล่างเพื่อทำปุ่มกลมที่มีสีไล่ระดับสี
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: 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,
),
),
)
],
),
),
),
)
หากใครกำลังมองหาปุ่มวงกลมที่สมบูรณ์กว่าที่ฉันเคยได้รับมาแล้ว
Center(
child: SizedBox.fromSize(
size: Size(80, 80), // button width and height
child: ClipOval(
child: Material(
color: Colors.pink[300], // button color
child: InkWell(
splashColor: Colors.yellow, // splash color
onTap: () {}, // button pressed
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.linked_camera), // icon
Text("Picture"), // text
],
),
),
),
),
),
)
คุณสามารถใช้ปุ่มวัสดุได้ตลอดเวลาหากคุณใช้แอพวัสดุเป็นเครื่องมือหลักของคุณ
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),),
),
),
)
ใน
Container()
วิดเจ็ตFlutter ใช้สำหรับจัดแต่งทรงผมContainer()
วิดเจ็ตของคุณการใช้วิดเจ็ตคุณสามารถตั้งค่าเส้นขอบหรือมุมโค้งมนของวิดเจ็ตใด ๆ
หากคุณต้องการตั้งค่าสไตล์การตกแต่ง & ตั้งค่าประเภทใด ๆ ให้วางวิดเจ็ตนั้นลงในContainer()
วิดเจ็ตซึ่งจะให้คุณสมบัติมากมายในการตกแต่ง
Container(
width: 100,
padding: EdgeInsets.all(10),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.blueAccent,
borderRadius: BorderRadius.circular(30)), // make rounded corner
child: Text("Click"),
)
เพื่อใช้รูปร่างใด ๆ ในปุ่มของคุณตรวจสอบให้แน่ใจว่าคุณได้ทำทุกรหัสภายในวิดเจ็ตปุ่ม
**shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.red) ),**
ถ้าคุณต้องการทำให้มันเป็นสี่เหลี่ยมใช้ `BorderRadius.circular (0.0) มันจะกลายเป็นสี่เหลี่ยมโดยอัตโนมัติ
ปุ่มแบบนี้
นี่คือซอร์สโค้ดทั้งหมดสำหรับหน้าจอ UI ที่ให้
Scaffold(
backgroundColor: Color(0xFF8E44AD),
body: new Center(
child: Column(
children: <Widget>[
Container(
margin: EdgeInsets.fromLTRB(90, 10, 20, 0),
padding: new EdgeInsets.only(top: 92.0),
child: Text(
"Currency Converter",
style: TextStyle(
fontSize: 48,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
Container(
margin: EdgeInsets.only(),
padding: EdgeInsets.all(25),
child: TextFormField(
decoration: new InputDecoration(
filled: true,
fillColor: Colors.white,
labelText: "Amount",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
),
),
Container(
padding: EdgeInsets.all(25),
child: TextFormField(
decoration: new InputDecoration(
filled: true,
fillColor: Colors.white,
labelText: "From",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
),
),
Container(
padding: EdgeInsets.all(25),
child: TextFormField(
decoration: new InputDecoration(
filled: true,
fillColor: Colors.white,
labelText: "To",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
)),
),
),
SizedBox(height: 20.0),
MaterialButton(
height: 58,
minWidth: 340,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(12)),
onPressed: () {},
child: Text(
"CONVERT",
style: TextStyle(
fontSize: 24,
color: Colors.black,
),
),
color: Color(0xFFF7CA18),
),
],
),
),
),
);
นี่คือทางออกอื่น
Container(
height: MediaQuery.of(context).size.height * 0.10,
width: MediaQuery.of(context).size.width,
child: ButtonTheme(
minWidth: MediaQuery.of(context).size.width * 0.75,
child: RaisedButton(
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(25.0),
side: BorderSide(color: Colors.blue)),
onPressed: () async {
// do something
},
color: Colors.red[900],
textColor: Colors.white,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("Button Text,
style: TextStyle(fontSize: 24)),
),
),
),
),
นี่คือรหัสสำหรับปัญหาของคุณคุณต้องนำคอนเทนเนอร์ธรรมดาที่มีรัศมีเส้นขอบมาด้วยในการตกแต่งกล่อง
new Container(
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(15.0)),
color: Colors.blue,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: new Text(
"Next",
style: new TextStyle(
fontWeight: FontWeight.w500,
color: Colors.white,
fontSize: 15.0,
),
),
),
],
),
),
RaisedButton(
child: Text("Button"),
onPressed: (){},
shape: RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0),
side: BorderSide(color: Colors.red))
)
RaisedButton
หรือInkWell