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
您可以在此处获得更多关于颤振布局/约束的参考:和