Çocuk olarak Column
iki widget içeren bir widget'ım var ve ikisi TextField
arasında biraz boşluk olmasını istiyorum.
Zaten denedim mainAxisAlignment: MainAxisAlignment.spaceAround
ama sonuç istediğim gibi değildi.
Çocuk olarak Column
iki widget içeren bir widget'ım var ve ikisi TextField
arasında biraz boşluk olmasını istiyorum.
Zaten denedim mainAxisAlignment: MainAxisAlignment.spaceAround
ama sonuç istediğim gibi değildi.
margin: EdgeInsets.only(left: 200.0, top: 300.0))
Yanıtlar:
Padding
Widget'ı bu iki widget arasında kullanabilir veya bu widget'ları widget ile sarmalayabilirsiniz Padding
.
Güncelleme
SizedBox widget'ı, iki widget arasına boşluk eklemek için iki widget arasında kullanılabilir ve kodu dolgu widget'ından daha okunaklı hale getirir.
Ör:
Column(
children: <Widget>[
Widget1(),
SizedBox(height: 10),
Widget2(),
],
),
column
-sınıfta o mülke sahip olsaydı. Tüm çocukların arasına bir dolgu malzemesi yerleştirmek kodlama zamanı kaybı olacaktır.
Padding
widget'ın 2 widget arasında yer aldığını söyledi . Bu 2 parçacığın alt öğesi haline gelmez Padding
.
Widget'ların arasına SizedBox
belirli bir karakter koyabilirsiniz height
, örneğin:
Column(
children: <Widget>[
FirstWidget(),
SizedBox(height: 100),
SecondWidget(),
],
),
Widget'ları içine almak yerine neden bunu tercih etmelisiniz Padding
? Okunabilirlik! Daha az görsel ortak metin vardır, daha az girinti vardır ve kod tipik okuma sırasını izler.
SizedBox
düzen sırasında olmaya çalıştığı istenen boyuta sahip, ancak hiçbir şey oluşturmayan normal bir parçacıktır. Metin veya Kapsayıcı gibi tüm yaprak widget'ları da boş, bu yüzden sorun değil.
Wrap()
bunun yerine Column()
alt widget'lar arasında boşluk eklemek için widget'ı kullanabilir ve çocuklar arasında eşit boşluk sağlamak için aralık özelliğini kullanabilirsiniz.
Wrap(
spacing: 20, // to apply margin in the main axis of the wrap
runSpacing: 20, // to apply margin in the cross axis of the wrap
children: <Widget>[
Text('child 1'),
Text('child 2')
]
)
runSpacing
yerine kullanınspacing
Bunu şu şekilde sarmak için dolgu kullanın:
Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello World!'),
),
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello World2!'),
)
]);
Ayrıca Container (padding ...) veya SizeBox (yükseklik: xx) kullanabilirsiniz. Sonuncusu en yaygın olanıdır, ancak widget'larınızın alanını nasıl yönetmek istediğinize bağlı olacaktır, eğer alan gerçekten de widget'ın bir parçasıysa padding kullanmayı ve örneğin listeler için sizebox'u kullanmayı seviyorum.
Bunu yapmanın birçok yolu var, burada birkaçını listeliyorum.
Kullanın Container
ve biraz yükseklik verin:
Column(
children: <Widget>[
Widget1(),
Container(height: 10), // set height
Widget2(),
],
)
Kullanım Spacer
Column(
children: <Widget>[
Widget1(),
Spacer(), // use Spacer
Widget2(),
],
)
Kullanım Expanded
Column(
children: <Widget>[
Widget1(),
Expanded(child: SizedBox()), // use Expanded
Widget2(),
],
)
Kullanım mainAxisAlignment
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround, // mainAxisAlignment
children: <Widget>[
Widget1(),
Widget2(),
],
)
Kullanım Wrap
Wrap(
direction: Axis.vertical, // make sure to set this
spacing: 20, // set your spacing
children: <Widget>[
Widget1(),
Widget2(),
],
)
Column(
children: <Widget>[
FirstWidget(),
Spacer(),
SecondWidget(),
]
)
Spacer, [Esnek] widget'a eklemek için esnek bir alan oluşturur. (Bir sütun gibi)
SizedBox'ın yukarıda kod okunabilirliği amacıyla kullanıldığı gibi , Padding widget'ını da aynı şekilde kullanabilirsiniz ve onu herhangi bir Sütun alt öğesi için bir ana widget yapmak zorunda kalmazsınız
Column(
children: <Widget>[
FirstWidget(),
Padding(padding: EdgeInsets.only(top: 40.0)),
SecondWidget(),
]
)
Bu sorunu farklı bir şekilde çözebilirsiniz.
Eğer kullanırsanız Satır / Sütun sonra kullanım zorunda mainAxisAlignment: MainAxisAlignment.spaceEvenly
Eğer kullanırsanız Wrap Widget kullanmak zorunda , 5 aralık: runSpacing 10,
SizeBox'ı her yerde kullanabilirsiniz ()
Sütunların varsayılan olarak yüksekliği yoktur, Sütununuzu Kapsayıcıya Sarabilir ve belirli yüksekliği Kapınıza ekleyebilirsiniz. O zaman aşağıdaki gibi bir şey kullanabilirsiniz:
Container(
width: double.infinity,//Your desire Width
height: height,//Your desire Height
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('One'),
Text('Two')
],
),
),
Burada birçok cevap var ama herkesin kullanması gereken en önemli cevabı buraya koyacağım.
1. Sütun
Column(
children: <Widget>[
Text('Widget A'), //Can be any widget
SizedBox(height: 20,), //height is space betweeen your top and bottom widget
Text('Widget B'), //Can be any widget
],
),
2. Sarın
Wrap(
direction: Axis.vertical, // We have to declare Axis.vertical, otherwise by default widget are drawn in horizontal order
spacing: 20, // Add spacing one time which is same for all other widgets in the children list
children: <Widget>[
Text('Widget A'), // Can be any widget
Text('Widget B'), // Can be any widget
]
)
Column(children: <Widget>[
Container(margin: EdgeInsets.only(top:12, child: yourWidget)),
Container(margin: EdgeInsets.only(top:12, child: yourWidget))
]);
Sütununuzun alt öğeleri arasında SizedBox () widget'ı kullanmanız gerekebilir. Umarım faydalı olur
Boyutlandırılmış kutu bu durumda yardımcı olmaz, telefon yatay modda.
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
],
)