Dart 列与x27之间的间距;孩子们在激动

Dart 列与x27之间的间距;孩子们在激动,dart,flutter,flutter-layout,Dart,Flutter,Flutter Layout,我有一个列小部件,其中有两个TextField小部件作为子部件,我希望它们之间有一些空间 我已经尝试了mainAxisAlignment:mainAxisAlignment.spaceAround,但结果并不是我想要的。您可以在这两个小部件之间使用填充小部件,或者使用填充小部件包装这些小部件 更新 小部件可以在两个小部件之间使用,以在两个小部件之间添加空间,它使代码比填充小部件更可读 例: 列( 儿童:[ Widget1(), 尺寸箱(高度:10), Widget2(), ], ), 只需使用填

我有一个
小部件,其中有两个
TextField
小部件作为子部件,我希望它们之间有一些空间


我已经尝试了
mainAxisAlignment:mainAxisAlignment.spaceAround
,但结果并不是我想要的。

您可以在这两个小部件之间使用
填充
小部件,或者使用
填充
小部件包装这些小部件

更新

小部件可以在两个小部件之间使用,以在两个小部件之间添加空间,它使代码比填充小部件更可读

例:

列(
儿童:[
Widget1(),
尺寸箱(高度:10),
Widget2(),
],
),

只需使用填充将其包装如下:

Column(
  children: <Widget>[
  Padding(
    padding: EdgeInsets.all(8.0),
    child: Text('Hello World!'),
  ),
  Padding(
    padding: EdgeInsets.all(8.0),
    child: Text('Hello World2!'),
  )
]);
列(
儿童:[
填充物(
填充:边缘设置。全部(8.0),
child:Text('Hello World!'),
),
填充物(
填充:边缘设置。全部(8.0),
child:Text('Hello World2!'),
)
]);

您也可以使用容器(填充…)或SizeBox(高度:x.x)。最后一个是最常见的,但这取决于您希望如何管理小部件的空间,如果空间确实是小部件的一部分,我喜欢使用填充,例如使用sizebox作为列表。

您可以在小部件之间放置一个具有特定高度的
SizedBox
,如下所示:

列(
儿童:[
FirstWidget(),
尺寸箱(高度:100),
SecondWidget(),
],
),
为什么更喜欢将小部件包装在
填充中?可读性!视觉样板更少,缩进更少,代码遵循典型的阅读顺序。

您可以使用
Wrap()
widget代替
Column()
在子窗口小部件之间添加空格。并使用spacing属性在子窗口小部件之间提供相等的空格

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')
  ]
)
Wrap(
间距:20,//在包裹的主轴上应用边距
行间距:20,//在包裹的横轴上应用边距
儿童:[
文本(“子1”),
文本('child 2')
]
)

与SizedBox用于代码可读性的方式相同,您可以以相同的方式使用填充小部件,而不必将其作为列的任何子项的父小部件

Column(
  children: <Widget>[
    FirstWidget(),
    Padding(padding: EdgeInsets.only(top: 40.0)),
    SecondWidget(),
  ]
)
列(
儿童:[
FirstWidget(),
填充(填充:仅限边集(顶部:40.0)),
SecondWidget(),
]
)
列(
儿童:[
FirstWidget(),
垫片(),
SecondWidget(),
]
)

间隔器创建一个灵活的空间来插入[flexible]小部件。(像一个专栏)

你可以用不同的方法解决这个问题

如果使用行/列,则必须使用mainAxisAlignment: MainAxisAlignment.space均匀

如果使用Wrap小部件,则必须使用运行间距:5,间距: 10,

在任何可以使用SizeBox()的地方


有很多方法可以做到这一点,我在这里列出了一些

  • 使用
    容器
    并给出一些高度:

    Column(
      children: <Widget>[
        Widget1(),
        Container(height: 10), // set height
        Widget2(),
      ],
    )
    
  • 使用扩展的

    Column(
      children: <Widget>[
        Widget1(),
        Expanded(child: SizedBox()), // use Expanded
        Widget2(),
      ],
    )
    
  • 使用
    Wrap

    Wrap(
      direction: Axis.vertical, // make sure to set this
      spacing: 20, // set your spacing
      children: <Widget>[
        Widget1(),
        Widget2(),
      ],
    )
    
    Wrap(
    方向:Axis.vertical,//确保设置此方向
    间距:20,//设置间距
    儿童:[
    Widget1(),
    Widget2(),
    ],
    )
    
  • 列(子项:[
    容器(边距:EdgeInsets.only(顶部:12,子项:yourWidget)),
    容器(边距:仅限边集(顶部:12,子项:yourWidget))
    ]);
    
    这里有很多答案,但我将在这里列出每个人都应该使用的最重要的答案

    1。列

     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
              ],
            ),
    
    列(
    儿童:[
    Text('Widget A'),//可以是任何小部件
    SizedBox(高度:20,),//高度是顶部和底部小部件之间的空间
    Text('Widget B'),//可以是任何小部件
    ],
    ),
    
    2。包裹

         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
                ]
            )
    
    Wrap(
    方向:Axis.vertical,//我们必须声明Axis.vertical,否则默认情况下小部件是按水平顺序绘制的
    间距:20,//添加一次间距,这与子列表中的所有其他小部件相同
    儿童:[
    Text('Widget A'),//可以是任何小部件
    Text('Widget B'),//可以是任何小部件
    ]
    )
    
    默认情况下,列没有高度, 可以将列包装到容器中,并将特定高度添加到容器中。 然后,您可以使用以下内容:

    Container(
       width: double.infinity,//Your desire Width
       height: height,//Your desire Height
       child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
             Text('One'),
             Text('Two')
          ],
       ),
    ),
    
    容器(
    宽度:两倍。无穷大,//你的欲望宽度
    身高:身高,//你想要的身高
    子:列(
    mainAxisAlignment:mainAxisAlignment.spaceBetween,
    儿童:[
    文本(“一”),
    文本(“两个”)
    ],
    ),
    ),
    
    您可能必须在列的子项之间使用SizedBox()小部件。
    希望这将是有用的

    大小的盒子在这种情况下不会有帮助,手机处于横向模式

    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),
                ),
              ),
            ),
          ],
         )
    
    body:Column(
    mainAxisAlignment:mainAxisAlignment.spaceBetween,
    crossAxisAlignment:crossAxisAlignment.stretch,
    儿童:[
    扩大(
    子:容器(
    边距:所有边缘集(15.0),
    装饰:盒子装饰(
    颜色:颜色(0xFF1D1E33),
    边界半径:边界半径。圆形(10.0),
    ),
    ),
    ),
    扩大(
    子:容器(
    边距:所有边缘集(15.0),
    装饰:盒子装饰(
    颜色:颜色(0xFF1D1E33),
    边界半径:边界半径。圆形(10.0),
    ),
    ),
    ),
    扩大(
    子:容器(
    边距:所有边缘集(15.0),
    装饰:盒子装饰(
    颜色:颜色(0xFF1D1E33),
    边界半径:边界半径。圆形(10.0),
    ),
    ),
    ),
    ],
    )
    
    您还可以使用辅助函数在每个子对象之后添加间距

    Li
    
    Column(children: <Widget>[
       Container(margin: EdgeInsets.only(top:12, child: yourWidget)),
       Container(margin: EdgeInsets.only(top:12, child: yourWidget))
    ]);
    
     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
              ],
            ),
    
         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
                ]
            )
    
    Container(
       width: double.infinity,//Your desire Width
       height: height,//Your desire Height
       child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
             Text('One'),
             Text('Two')
          ],
       ),
    ),
    
    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),
                ),
              ),
            ),
          ],
         )