स्पंदन: लचीला बनाम विस्तारित


108

मैं दोनों Expandedऔर Flexibleविगेट्स का उपयोग किया है और वे एक ही काम करने लगते हैं।

विस्तारित और लचीले के बीच क्या अंतर है?

जवाबों:


127
Scaffold(
  appBar: AppBar(),
  body: Column(
    children: <Widget>[
      Row(
        children: <Widget>[
          buildExpanded(),
          buildFlexible(),
        ],
      ),
      Row(
        children: <Widget>[
          buildExpanded(),
          buildExpanded(),
        ],
      ),
      Row(
        children: <Widget>[
          buildFlexible(),
          buildFlexible(),
        ],
      ),
    ],
  ),
);

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


6
लचीला केवल आवश्यक स्थान लेता है, और विस्तारित flexकारक का सम्मान करते हुए सभी उपलब्ध स्थान लेता है। अधिक जानकारी के लिए विजेट के डॉक्सExpanded देखें ।
अलेक्जेंडर 13

105

Expanded के लिए सिर्फ एक आशुलिपि है Flexible

इस तरह से विस्तारित का उपयोग करना:

Expanded(
  child: Foo(),
);

के लिए सख्ती से बराबर है:

Flexible(
  fit: FlexFit.tight,
  child: Foo(),
);

आप उपयोग कर सकते हैं Flexibleखत्म हो गया Expandedहै जब आप एक अलग चाहते हैं fit, कुछ उत्तरदायी लेआउट में उपयोगी है।

के बीच का अंतर FlexFit.tightऔर FlexFit.looseहै कि ढीला अपने बच्चे को एक अधिकतम आकार जबकि तंग बलों है कि बच्चे को सभी उपलब्ध स्थान को भरने के लिए अनुमति देगा।


1
नहीं है Maximum sizeऔर Available spaceयहाँ एक ही बात मतलब है?
CopsOnRoad

नहीं, मैक्सिममाइज़ करने से मेरा मतलब कुछ ऐसा था जैसे फ्लेक्सिबल कॉन्स्ट्रेनबॉक्स के बच्चे के रूप में मैक्सिमम के साथ एक कॉलम के अंदर
Rémi Rousselet

25
आसान शब्दों में, Flexible.tightबच्चों को उपलब्ध संपूर्ण जगह लेने के लिए मजबूर करेगा और बच्चों को वह करने Flexible.looseदेगा जो वे चाहते हैं। कुछ बच्चे पूरी जगह ले सकते हैं और कुछ नहीं, उनके प्रकार क्या हैं, इसके आधार पर।
CopsOnRoad

43

लचीले के तहत विजेट डिफ़ॉल्ट WRAP_CONTENT द्वारा हैं, हालांकि आप पैरामीटर फ़िट का उपयोग करके इसे बदल सकते हैं।

के तहत विजेट का विस्तार किया है MATCH_PARENT आप उपयोग कर इसे बदल सकते हैं फ्लेक्स


3
Android डेवलपर्स के लिए महान व्याख्या!
स्विफ्टिविफ्ट जूल

भले ही लचीले WRAP_CONTENT की तरह लगता है, हम उपलब्ध स्थान में संरेखण के लिए लचीले के अंदर संरेखित करते हैं।
अक्षर पटेल


17

आप पंक्तियों और स्तंभों में विजेट को आकार देने के लिए लचीले का उपयोग कर सकते हैं । यह मुख्य रूप से अपने माता-पिता के विगेट्स के साथ संबंध रखते हुए विभिन्न बाल विगेट्स के स्थान को समायोजित करने के लिए उपयोग किया जाता है।

इस बीच, विस्तारित ने पंक्तियों और स्तंभों के बच्चों को भेजे गए अवरोधों को बदल दिया ; यह वहां उपलब्ध रिक्त स्थान को भरने में मदद करता है। इसलिए, जब आप अपने बच्चे को एक विस्तारित विजेट में लपेटते हैं तो यह खाली जगहों को भर देता है।

फ़्लटर के आधिकारिक YouTube चैनल से इन वीडियो को प्रदान करना , लोगों की मदद करने के लिए, जो आगामी भविष्य में इसके लिए देख सकते हैं ...

  1. विस्तारित:

  2. लचीले:


1

एकमात्र अंतर यदि आप Flexibleइसके बजाय उपयोग करते हैं Expanded, तो यह है कि Flexibleइसके बच्चे की Flexibleखुद की तुलना में एक ही या छोटी चौड़ाई है, जबकि Expandedइसके बच्चे को उसी के समान चौड़ाई के लिए मजबूर करता है Expanded। लेकिन दोनों Expandedऔर Flexibleअपने बच्चों की चौड़ाई की अनदेखी जब खुद को आकार देने।

Row(children:[
  Flexible(
    child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))),
  Flexible(
    child: Container(color: Colors.green, child: Text(‘Goodbye!’))),
  ]
)

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

नोट : इसका मतलब है कि Rowबच्चों को उनके आकार के अनुपात में फैलाना असंभव है । पंक्ति की एकदम बच्चे की चौड़ाई का उपयोग करता है, या यह पूरी तरह से ध्यान नहीं देता है जब आप का उपयोग करें Expandedया Flexible


0

विस्तारित () फ्लेक्सिबल () से अधिक कुछ नहीं है

Flexible (fit: FlexFit.tight) = Expanded()

लेकिन, fit :FlexFit.looseडिफ़ॉल्ट रूप से लचीला उपयोग करता है।

FlexFit.tight = जितना संभव हो उतना स्थान लेने के लिए माता-पिता में चुस्त- दुरुस्त रहना चाहता है।

FlexFit.loose = अपने लिए जितना संभव हो उतना कम जगह लेने वाले माता-पिता में ढीले फिट होना चाहता है।

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