Fleksibel hanya membutuhkan ruang yang dibutuhkan, dan Diperluas mengambil semua ruang yang tersedia, dengan flexmempertimbangkan faktornya. Lihat dokumen Expandedwidget untuk info lebih lanjut.
Aleksandar
100
Expanded hanyalah singkatan dari Flexible
Menggunakan diperluas dengan cara ini:
Expanded(
child: Foo(),
);
setara dengan:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Anda mungkin ingin menggunakan Flexibleover Expandedketika Anda menginginkan yang berbeda fit, berguna dalam beberapa tata letak responsif.
Perbedaan antara FlexFit.tightand FlexFit.looseis bahwa longgar akan memungkinkan anaknya memiliki ukuran maksimal sementara ketat memaksa anak tersebut untuk mengisi semua ruang yang tersedia.
tidak Maximum sizedan Available spaceberarti hal yang sama di sini?
CopsOnRoad
Tidak, dengan ukuran maksimum yang saya maksudkan adalah memiliki anak dari Flexible a ConstrainedBox dengan maxHeight di dalam Kolom
Rémi Rousselet
25
Dengan kata mudah, Flexible.tightakan memaksa anak untuk mengambil seluruh ruang yang tersedia dan Flexible.looseakan membiarkan anak melakukan apa yang mereka inginkan. Beberapa anak mungkin menggunakan seluruh ruangan dan beberapa tidak, tergantung tipe mereka.
CopsOnRoad
30
Widget di bawah Fleksibel secara default WRAP_CONTENT meskipun Anda dapat mengubahnya menggunakan parameter Fit.
Widget di bawah Expanded adalah MATCH_PARENT Anda dapat mengubahnya menggunakan flex .
Anda dapat menggunakan Fleksibel untuk mengubah ukuran widget dalam baris dan kolom . Ini terutama digunakan untuk menyesuaikan ruang widget anak yang berbeda sekaligus menjaga hubungan dengan widget induknya.
Sementara itu, Perluasan mengubah batasan yang dikirim ke turunan baris dan kolom ; itu membantu untuk mengisi ruang yang tersedia di sana. Oleh karena itu, saat Anda membungkus anak Anda dalam widget yang Diperluas, ruang kosong tersebut akan terisi.
Menyediakan video-video ini dari saluran YouTube Resmi Flutter hanya untuk membantu orang-orang, yang mungkin mencari ini di masa mendatang ...
Satu-satunya perbedaan jika Anda menggunakan, Flexiblebukan Expanded, adalah Flexiblemembiarkan anaknya memiliki lebar yang sama atau lebih kecil dari Flexibleitu sendiri, sementara Expandedmemaksa anaknya memiliki lebar yang sama persis dengan Expanded. Tapi keduanya Expandeddan Flexiblemengabaikan lebar anak-anak mereka saat mengukur diri mereka sendiri.
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!’))),
]
)
Catatan : Ini berarti bahwa tidak mungkin untuk membesarkan Rowanak secara proporsional dengan ukurannya. The Row baik menggunakan lebar anak yang tepat, atau mengabaikannya sepenuhnya saat Anda menggunakan Expandedatau Flexible.
flex
mempertimbangkan faktornya. Lihat dokumenExpanded
widget untuk info lebih lanjut.Expanded
hanyalah singkatan dariFlexible
Menggunakan diperluas dengan cara ini:
setara dengan:
Anda mungkin ingin menggunakan
Flexible
overExpanded
ketika Anda menginginkan yang berbedafit
, berguna dalam beberapa tata letak responsif.Perbedaan antara
FlexFit.tight
andFlexFit.loose
is bahwa longgar akan memungkinkan anaknya memiliki ukuran maksimal sementara ketat memaksa anak tersebut untuk mengisi semua ruang yang tersedia.sumber
Maximum size
danAvailable space
berarti hal yang sama di sini?Flexible.tight
akan memaksa anak untuk mengambil seluruh ruang yang tersedia danFlexible.loose
akan membiarkan anak melakukan apa yang mereka inginkan. Beberapa anak mungkin menggunakan seluruh ruangan dan beberapa tidak, tergantung tipe mereka.Widget di bawah Fleksibel secara default WRAP_CONTENT meskipun Anda dapat mengubahnya menggunakan parameter Fit.
Widget di bawah Expanded adalah MATCH_PARENT Anda dapat mengubahnya menggunakan flex .
sumber
Expanded
- ituFlexible
dengan set fitclass Expanded extends Flexible { const Expanded({ Key key, int flex = 1, @required Widget child, }) : super( key: key, flex: flex, fit: FlexFit.tight, child: child ); }
sumber
Anda dapat menggunakan Fleksibel untuk mengubah ukuran widget dalam baris dan kolom . Ini terutama digunakan untuk menyesuaikan ruang widget anak yang berbeda sekaligus menjaga hubungan dengan widget induknya.
Sementara itu, Perluasan mengubah batasan yang dikirim ke turunan baris dan kolom ; itu membantu untuk mengisi ruang yang tersedia di sana. Oleh karena itu, saat Anda membungkus anak Anda dalam widget yang Diperluas, ruang kosong tersebut akan terisi.
Menyediakan video-video ini dari saluran YouTube Resmi Flutter hanya untuk membantu orang-orang, yang mungkin mencari ini di masa mendatang ...
Diperluas:
Fleksibel:
sumber
Expanded () tidak lebih dari Fleksibel () dengan
Flexible (fit: FlexFit.tight) = Expanded()
namun, penggunaan Fleksibel
fit :FlexFit.loose
secara default.FlexFit.tight = Ingin menyesuaikan diri dengan orang tua yang mengambil ruang sebanyak mungkin.
FlexFit.loose = Ingin menyesuaikan diri dengan orang tua yang mengambil ruang sesedikit mungkin untuk dirinya sendiri.
sumber
Satu-satunya perbedaan jika Anda menggunakan,
Flexible
bukanExpanded
, adalahFlexible
membiarkan anaknya memiliki lebar yang sama atau lebih kecil dariFlexible
itu sendiri, sementaraExpanded
memaksa anaknya memiliki lebar yang sama persis denganExpanded
. Tapi keduanyaExpanded
danFlexible
mengabaikan lebar anak-anak mereka saat mengukur diri mereka sendiri.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!’))), ] )
Catatan : Ini berarti bahwa tidak mungkin untuk membesarkan
Row
anak secara proporsional dengan ukurannya. The Row baik menggunakan lebar anak yang tepat, atau mengabaikannya sepenuhnya saat Anda menggunakanExpanded
atauFlexible
.sumber