Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 为什么同级应用交叉对齐?_Flutter_Dart - Fatal编程技术网

Flutter 为什么同级应用交叉对齐?

Flutter 为什么同级应用交叉对齐?,flutter,dart,Flutter,Dart,我对颤振非常陌生,我创建了以下小部件: class Registration extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: <Widget>[ Expanded( child: Row( mainAxisAlignment: MainAxisAl

我对颤振非常陌生,我创建了以下小部件:

class Registration extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Expanded(
          child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[Text("Hello1")]),
        ),
        Expanded(child: Text("Hello2")),
      ],
    );
  }
}
类注册扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
扩大(
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[文本(“Hello1”)],
),
扩展(子:文本(“Hello2”)),
],
);
}
}
看起来:

我想知道,为什么文本<代码> Helo2也被放置在屏幕中间。我没有明确告诉你

我想要达到的是


您可以将Hello2与align小部件对齐。默认情况下,Hello2放在第二个展开屏幕的开头,占据屏幕的一半

class Registration extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Expanded(
          child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[Text("Hello1")]),
        ),
        Expanded(child: Align(alignment: Alignment.bottomRight,child:Text("Hello2"))),
      ],
    );
  }
}
类注册扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
扩大(
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[文本(“Hello1”)],
),
展开(子对象:对齐(对齐:对齐。右下角,子对象:文本(“Hello2”)),
],
);
}
}
使用容器代替Align也可以实现同样的效果

要了解使用容器包装区域并添加颜色,请执行以下操作:

class Registration extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
          Expanded(
            child: Container(color: Colors.green,child:Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[Text("Hello1")]),
          ),
        ),
        Expanded(
            child:
                Container(color: Colors.red, child: Text("Hello2"))),
      ],
    );
  }
}
类注册扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
扩大(
子:容器(颜色:颜色。绿色,子:行)(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[文本(“Hello1”)],
),
),
扩大(
儿童:
容器(颜色:Colors.red,子级:Text(“Hello2”)),
],
);
}
}

扩展的小部件占用所有可用空间。如果在一列中放置2个或更多扩展的小部件,它们将平等地共享可用空间,除非为其中一个指定不同的flex属性。对于扩展的小部件,默认情况下flex=1

本周颤振小部件(扩展):

您可以将Hello2与align小部件对齐。默认情况下,Hello2放在第二个展开屏幕的开头,占据屏幕的一半

class Registration extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Expanded(
          child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[Text("Hello1")]),
        ),
        Expanded(child: Align(alignment: Alignment.bottomRight,child:Text("Hello2"))),
      ],
    );
  }
}
类注册扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
扩大(
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[文本(“Hello1”)],
),
展开(子对象:对齐(对齐:对齐。右下角,子对象:文本(“Hello2”)),
],
);
}
}
使用容器代替Align也可以实现同样的效果

要了解使用容器包装区域并添加颜色,请执行以下操作:

class Registration extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
          Expanded(
            child: Container(color: Colors.green,child:Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[Text("Hello1")]),
          ),
        ),
        Expanded(
            child:
                Container(color: Colors.red, child: Text("Hello2"))),
      ],
    );
  }
}
类注册扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
扩大(
子:容器(颜色:颜色。绿色,子:行)(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[文本(“Hello1”)],
),
),
扩大(
儿童:
容器(颜色:Colors.red,子级:Text(“Hello2”)),
],
);
}
}

扩展的小部件占用所有可用空间。如果在一列中放置2个或更多扩展的小部件,它们将平等地共享可用空间,除非为其中一个指定不同的flex属性。对于扩展的小部件,默认情况下flex=1

本周颤振小部件(扩展):
和列都有默认对齐方式,即使您没有指定任何值。以下是专栏的来源:

...
Column({
  Key? key,
  MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
  MainAxisSize mainAxisSize = MainAxisSize.max,
  CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
  TextDirection? textDirection,
  VerticalDirection verticalDirection = VerticalDirection.down,
  TextBaseline? textBaseline,
  List<Widget> children = const <Widget>[],
}) : super(
...
。。。
纵队({
钥匙?,钥匙,
MainAxisAlignment MainAxisAlignment=MainAxisAlignment.start,
MainAxisSize MainAxisSize=MainAxisSize.max,
CrossAxisAlignment CrossAxisAlignment=CrossAxisAlignment.center,
TextDirection?TextDirection,
垂直方向垂直方向=垂直方向。向下,
文本基线?,文本基线,
列出子项=常量[],
}):超级(
...
关于你的问题:

为什么文本Helo2也被放置在屏幕中间,我没有明确地告诉它。

这是因为
crossAxisAlignment
是默认的crossAxisAlignment.center


您可以在此处获得更多关于颤振布局/约束的参考:和

都具有默认对齐方式,即使您没有指定任何值。以下是列的来源:

...
Column({
  Key? key,
  MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
  MainAxisSize mainAxisSize = MainAxisSize.max,
  CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
  TextDirection? textDirection,
  VerticalDirection verticalDirection = VerticalDirection.down,
  TextBaseline? textBaseline,
  List<Widget> children = const <Widget>[],
}) : super(
...
。。。
纵队({
钥匙?,钥匙,
MainAxisAlignment MainAxisAlignment=MainAxisAlignment.start,
MainAxisSize MainAxisSize=MainAxisSize.max,
CrossAxisAlignment CrossAxisAlignment=CrossAxisAlignment.center,
TextDirection?TextDirection,
垂直方向垂直方向=垂直方向。向下,
文本基线?,文本基线,
列出子项=常量[],
}):超级(
...
关于你的问题:

为什么文本Helo2也被放置在屏幕中间,我没有明确地告诉它。

这是因为
crossAxisAlignment
是默认的crossAxisAlignment.center

您可以在此处获得更多关于颤振布局/约束的参考:和