Her ikisini de kullandım Expanded
ve Flexible
aynı şekilde çalışıyorlar. Kaçırdığım ikisi arasında bir fark var mı?
Her ikisini de kullandım Expanded
ve Flexible
aynı şekilde çalışıyorlar. Kaçırdığım ikisi arasında bir fark var mı?
Yanıtlar:
Expanded
sadece kısaltmasıdır Flexible
Bu şekilde genişletilmiş kullanarak:
Expanded(
child: Foo(),
);
kesinlikle şuna eşdeğerdir:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Sen kullanmak isteyebilirsiniz Flexible
üzerinde Expanded
size farklı istediğinizde fit
bazı duyarlı düzenleri yararlıdır.
Arasındaki fark FlexFit.tight
ve FlexFit.loose
gevşek onun çocuk çocuk tüm kullanılabilir alanı dolduracak şekilde o sıkı güçlerin ederken maksimum büyüklüğe sahip sağlayacak olmasıdır.
Maximum size
ve Available space
burada aynı anlama geliyor?
Flexible.tight
çocukları mevcut tüm alanı kaplamaya zorlayacak ve çocukların Flexible.loose
istediklerini yapmalarına izin verecektir. Türlerine bağlı olarak bazı çocuklar tüm alanı kaplarken bazıları almayabilir.
Esnek altındaki widget varsayılan olarak WRAP_CONTENT'tir, ancak Fit parametresini kullanarak onu değiştirebilirsiniz.
Expanded altındaki Widget MATCH_PARENT ise bunu flex kullanarak değiştirebilirsiniz .
Expanded
- Flexible
set uyumu ile
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
Sen kullanabilir Esnek içinde widget'lar yeniden boyutlandırmak için satır ve sütunların . Esas olarak, ana pencere öğeleriyle ilişkiyi korurken farklı alt bileşenlerin alanını ayarlamak için kullanılır.
Bu arada Expanded , satır ve sütunların alt öğelerine gönderilen kısıtlamaları değiştirir ; oradaki mevcut alanları doldurmaya yardımcı olur. Bu nedenle, çocuğunuzu Genişletilmiş bir pencere aracına sardığınızda, boş alanları doldurur.
Flutter'ın Resmi YouTube kanalından bu videoları sadece gelecekte bunu arayabilecek insanlara yardım etmek için sunmak ...
Expanded (), Esnek () 'den başka bir şey değildir.
Flexible (fit: FlexFit.tight) = Expanded()
ancak, fit :FlexFit.loose
varsayılan olarak Esnek kullanır .
FlexFit.tight = Mümkün olduğunca çok yer kaplayarak ebeveyne sıkıca sığmak istiyor.
FlexFit.loose = Kendisi için olabildiğince az yer kaplayarak ebeveyne gevşek bir şekilde uymak istiyor.
Bunun Flexible
yerine kullanırsanız tek fark , çocuğunun kendisiyle aynı veya daha küçük genişliğe sahip Expanded
olmasına Flexible
izin Flexible
verirken Expanded
, çocuğunu Expanded
. Ancak her iki Expanded
ve Flexible
kendilerini boyutlandırma sırasında çocuklarının genişliğini görmezden.
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!’))),
]
)
Not : Bu, Row
çocukları boylarına orantılı olarak büyütmenin imkansız olduğu anlamına gelir . Satır ya tam alt öğenin genişliğini kullanır Expanded
ya da veya kullandığınızda tamamen yok sayar Flexible
.
flex
faktöre saygı duyarak mevcut tüm alanı kaplar . Daha fazla bilgi içinExpanded
widget'ın belgelerine bakın .