फ़्लटर में सीमा-त्रिज्या के साथ एक गोल बटन / बटन बनाएं


173

मैं वर्तमान में फ़्लटर में एक एंड्रॉइड ऐप विकसित कर रहा हूं। मैं एक गोल बटन कैसे जोड़ सकता हूं?


1
आप उपयोग कर सकते हैं RaisedButtonयाInkWell
Blasanka

यह यहाँ का उल्लेख किया है कई तरीके mightytechno.com/rounded-button-flutter
इशान फर्नांडो

जवाबों:


300

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

1
हाय अब्राम, यह मेरे लिए इतना मददगार था। आपको बहुत - बहुत धन्यवाद!
जौच

198

आप RaisedButton विजेट का उपयोग कर सकते हैं। उठाए गए बटन विजेट में आकार की संपत्ति होती है जिसे आप नीचे दिए गए स्निपेट में दिखा सकते हैं।

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

37

यहाँ छवि विवरण दर्ज करें

इसे करने के कई तरीके हैं। मैं यहां कुछ सूचीबद्ध कर रहा हूं।

(१) उपयोग करना 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"),
)

31

आप बस 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


1
धन्यवाद! मैं आपके द्वारा बताए गए उत्तर की तलाश में हूं।
प्रमेश भालला

28

आप बस कस्टम बटन प्राप्त करने के लिए 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विजेट का उपयोग करें । पढ़ें क्यों? यहाँMaterialInkWell


4
यदि आप चाहते हैं InkWellगोलाकार कोनों को क्लिप करने के लिए तो आप जोड़ने की जरूरत borderRadius: BorderRadius.circular(10.0)के लिए InkWellविजेट भी अन्यथा यह सीमांकन आयत के किनारों के लिए जाना जाएगा।
विक्टर रेंडिना

@VictorRendina मैं तरंगों को गोल करने के लिए एक रास्ता खोज रहा था, उर टिप्पणी के लिए धन्यवाद। इसे इंकवेल प्रश्नों के लिए एक उत्कट उत्तर के रूप में जोड़ें क्योंकि कई इसका उल्लेख नहीं कर रहे हैं।
सुदेश

5

एक ढाल रंग के साथ गोल बटन बनाने के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

 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

आपको विशेष रूप से डॉक्स के इस पृष्ठ के साथ खुद को परिचित करना चाहिए: गोल कोनों

डॉक्स आपको दिखाते हैं कि कैसे एक घटक की स्टाइलिंग और सीएसएस में बराबर स्टाइल को बदलना है, अगर आप पहले से ही परिचित हैं।


3

आप इस कोड को पारदर्शी राउंडेड बटन के लिए उपयोग कर सकते हैं, ताकि पारदर्शी रंग रंग संपत्ति के अंदर चला जाए 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,
                            ),
                        ),
                    )
                ],
            ),
        ),
    ),
)

पारदर्शी पृष्ठभूमि बटन


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

0

यदि आप अपने मुख्य विजेट के रूप में सामग्री ऐप का उपयोग कर रहे हैं तो आप हमेशा सामग्री बटन का उपयोग कर सकते हैं।

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

0

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

0

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

0

यहाँ एक और उपाय है

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

0

यहाँ आपकी समस्या के लिए कोड है जिसे आपको बॉक्सडेक्यूलेशन में सीमा त्रिज्या के साथ सरल कंटेनर लेना है।

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

0
RaisedButton(
          child: Text("Button"),
          onPressed: (){},
          shape: RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0),
          side: BorderSide(color: Colors.red))
        )

1
हालांकि यह कोड प्रश्न को हल कर सकता है, जिसमें यह भी बताया गया है कि यह समस्या कैसे और क्यों हल करती है, इससे वास्तव में आपके पोस्ट की गुणवत्ता को बेहतर बनाने में मदद मिलेगी, और संभवत: अधिक वोट मिले। याद रखें कि आप भविष्य में पाठकों के लिए सवाल का जवाब दे रहे हैं, न कि केवल उस व्यक्ति से जो अब पूछ रहा है। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें और संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं।
Богдан Опир

ok धन्यवाद u मुझे बताएं कि मैं कहां गलत हूं
शिल्पा नौले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.