मैं वर्तमान में फ़्लटर में एक एंड्रॉइड ऐप विकसित कर रहा हूं। मैं एक गोल बटन कैसे जोड़ सकता हूं?
मैं वर्तमान में फ़्लटर में एक एंड्रॉइड ऐप विकसित कर रहा हूं। मैं एक गोल बटन कैसे जोड़ सकता हूं?
जवाबों:
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)),
),
],
)
इसे करने के कई तरीके हैं। मैं यहां कुछ सूचीबद्ध कर रहा हूं।
(१) उपयोग करना RoundedRectangleBorder
RaisedButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
onPressed: () {},
child: Text("Button"),
)
(२) प्रयोग करना ClipRRect
ClipRRect(
borderRadius: BorderRadius.circular(40),
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(३) उपयोग करना ClipOval
ClipOval(
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(४) प्रयोग करना ButtonTheme
ButtonTheme(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
child: RaisedButton(
onPressed: () {},
child: Text("Button"),
),
)
(५) प्रयोग करना 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()
अपने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"),
)
You'r बटन में किसी भी आकार का उपयोग करने के लिए सुनिश्चित करें कि आप बटन विजेट के अंदर सभी कोड करते हैं
**shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.red) ),**
यदि आप इसे बनाना चाहते हैं तो स्क्वायर `बॉर्डररियस.सर्कुलर '(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