मैं दोनों Expandedऔर Flexibleविगेट्स का उपयोग किया है और वे एक ही काम करने लगते हैं।
विस्तारित और लचीले के बीच क्या अंतर है?
मैं दोनों Expandedऔर Flexibleविगेट्स का उपयोग किया है और वे एक ही काम करने लगते हैं।
विस्तारित और लचीले के बीच क्या अंतर है?
जवाबों:
Expanded के लिए सिर्फ एक आशुलिपि है Flexible
इस तरह से विस्तारित का उपयोग करना:
Expanded(
child: Foo(),
);
के लिए सख्ती से बराबर है:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
आप उपयोग कर सकते हैं Flexibleखत्म हो गया Expandedहै जब आप एक अलग चाहते हैं fit, कुछ उत्तरदायी लेआउट में उपयोगी है।
के बीच का अंतर FlexFit.tightऔर FlexFit.looseहै कि ढीला अपने बच्चे को एक अधिकतम आकार जबकि तंग बलों है कि बच्चे को सभी उपलब्ध स्थान को भरने के लिए अनुमति देगा।
Maximum sizeऔर Available spaceयहाँ एक ही बात मतलब है?
Flexible.tightबच्चों को उपलब्ध संपूर्ण जगह लेने के लिए मजबूर करेगा और बच्चों को वह करने Flexible.looseदेगा जो वे चाहते हैं। कुछ बच्चे पूरी जगह ले सकते हैं और कुछ नहीं, उनके प्रकार क्या हैं, इसके आधार पर।
लचीले के तहत विजेट डिफ़ॉल्ट WRAP_CONTENT द्वारा हैं, हालांकि आप पैरामीटर फ़िट का उपयोग करके इसे बदल सकते हैं।
के तहत विजेट का विस्तार किया है MATCH_PARENT आप उपयोग कर इसे बदल सकते हैं फ्लेक्स ।
Expanded- यह Flexibleसेट फिट के साथ है
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
आप पंक्तियों और स्तंभों में विजेट को आकार देने के लिए लचीले का उपयोग कर सकते हैं । यह मुख्य रूप से अपने माता-पिता के विगेट्स के साथ संबंध रखते हुए विभिन्न बाल विगेट्स के स्थान को समायोजित करने के लिए उपयोग किया जाता है।
इस बीच, विस्तारित ने पंक्तियों और स्तंभों के बच्चों को भेजे गए अवरोधों को बदल दिया ; यह वहां उपलब्ध रिक्त स्थान को भरने में मदद करता है। इसलिए, जब आप अपने बच्चे को एक विस्तारित विजेट में लपेटते हैं तो यह खाली जगहों को भर देता है।
फ़्लटर के आधिकारिक YouTube चैनल से इन वीडियो को प्रदान करना , लोगों की मदद करने के लिए, जो आगामी भविष्य में इसके लिए देख सकते हैं ...
एकमात्र अंतर यदि आप 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।
विस्तारित () फ्लेक्सिबल () से अधिक कुछ नहीं है
Flexible (fit: FlexFit.tight) = Expanded()
लेकिन, fit :FlexFit.looseडिफ़ॉल्ट रूप से लचीला उपयोग करता है।
FlexFit.tight = जितना संभव हो उतना स्थान लेने के लिए माता-पिता में चुस्त- दुरुस्त रहना चाहता है।
FlexFit.loose = अपने लिए जितना संभव हो उतना कम जगह लेने वाले माता-पिता में ढीले फिट होना चाहता है।
flexकारक का सम्मान करते हुए सभी उपलब्ध स्थान लेता है। अधिक जानकारी के लिए विजेट के डॉक्सExpandedदेखें ।