相关文章:Flutter学习目录 git
github地址:Flutter学习github
文章结构bash
CrossAxisAlignment Properyless
MainAxisAlignment Properyide
TextDirection Propery布局
VerticalDirection Properypost
MainAxisSize Propery学习
row是一个用于水平展现多个子控件的控件。row这个控件不会滚动。若是你有一行控件在空间不足的状况下能够滚动,考虑使用ListView类。ui
若是想在row上展现3个子控件,咱们能够这样作。 代码以下:spa
//Row
class Row_Text_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
child: Row(
children: <Widget>[
Container(
color: Colors.orange,
child: FlutterLogo(
size: 60.0,
),
),
Container(
color: Colors.blue,
child: FlutterLogo(
size: 60.0,
),
),
Container(
color: Colors.purple,
child: FlutterLogo(
size: 60.0,
),
)
],
),
);
}
}
复制代码
效果图以下:
Column是一个用于垂直展现多个子控件的控件。Column这个控件不会滚动。若是你有一行控件在空间不足的状况下能够滚动,考虑使用ListView类。
若是想在row上展现3个子控件,咱们能够这样作。 代码以下:
//Column
class Column_Text_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Container(
color: Colors.orange,
child: FlutterLogo(
size: 60.0,
),
),
Container(
color: Colors.green,
child: FlutterLogo(
size: 60.0,
),
),
Container(
color: Colors.purple,
child: FlutterLogo(
size: 60.0,
),
)
],
),
);
}
}
复制代码
效果图以下:
Column和Row有相同的属性。因此下面的例题,咱们同时展现两个控件的效果。
CrossAxis是交叉轴,就是与当前控件方向垂直的轴。具体效果以下图:
将子控件的起始边与crossAxis的起始边对齐。
row和Column代码以下:
//row和Column
class CrossAxisAlignment_start_Propery_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
//child: Row(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
color: Colors.blue,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.pink),
Icon(Icons.adjust, size: 50.0, color: Colors.purple),
Icon(Icons.adjust, size: 50.0, color: Colors.greenAccent),
Container(
color: Colors.orange,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.cyan),
],
),
);
}
}
复制代码
放置子控件,使它们的中心与十字轴的中间对齐。
将子控件放置十字轴的末端。
子控件充满十字轴
将放置在屏幕上的子控件,基线匹配。 您应该将TextBaseline Class与CrossAxisAlignment.baseline一块儿使用。 未使用Baseline代码以下:
//CrossAxisAlignment.baseline
class CrossAxisAlignment_withOutbaseline_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"Flutter",
style: TextStyle(
color: Colors.yellow,
fontSize: 30.0
),
),
Text(
"Flutter",
style: TextStyle(
color: Colors.blue,
fontSize: 20.0
),
),
],
),
);
}
}
复制代码
效果图以下:
使用Baseline代码以下:
//CrossAxisAlignment.baseline
//使用
class CrossAxisAlignment_withbaseline_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,与上面搭配使用、不然会报错
children: <Widget>[
Text(
"Flutter",
style: TextStyle(
color: Colors.yellow,
fontSize: 30.0
),
),
Text(
"Flutter",
style: TextStyle(
color: Colors.blue,
fontSize: 20.0
),
),
],
),
);
}
}
复制代码
效果图以下:
Column和Row有相同的属性。因此下面的例题,咱们同时展现两个控件的效果。
MainAxis是主轴,就是与当前控件方向平行。具体效果以下图:
将子控件放在尽量靠近主轴起点的位置。 代码以下:
//MainAxisAlignment Propery
//MainAxisAlignment.start
class MainAxisAlignment_start_Propery_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
//child: Row(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
//mainAxisAlignment: MainAxisAlignment.center,
//mainAxisAlignment: MainAxisAlignment.end,
//mainAxisAlignment: MainAxisAlignment.spaceAround,
//mainAxisAlignment: MainAxisAlignment.spaceBetween,
//mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Container(
color: Colors.blue,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.pink),
Icon(Icons.adjust, size: 50.0, color: Colors.purple),
Icon(Icons.adjust, size: 50.0, color: Colors.greenAccent),
Container(
color: Colors.orange,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.cyan),
],
),
);
}
}
复制代码
效果图以下:
将子控件放在尽量靠近主轴中间的位置。 效果图以下:
将子控件放在尽量靠近主轴末端的位置。 效果图以下:
子控件之间均匀分布,间距为A;可是第一个和最后一个控件距离边界的距离为子控件距离的一半,即A/2。 效果图以下:
子控件之间均匀分布,间距为A;可是第一个和最后一个控件距离边界的距离是0。 效果图以下:
子控件之间均匀分布,间距为A;可是第一个和最后一个控件距离边界的距离也是A。
决定水平方向上子控件的布局顺序。
这里仅以CrossAxisAlignment为例,mainAxisAlignment能够自行分析。
children中的子控件按照顺序,从左向右排列。默认是从左向右排列,即TextDirection.ltr。
代码以下:
//TextDirection Propery
class TextDirection_ltr_Propery extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
//child: Row(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
//crossAxisAlignment: CrossAxisAlignment.center,
//crossAxisAlignment: CrossAxisAlignment.end,
textDirection: TextDirection.ltr,
children: <Widget>[
Text(
"Flutter",
style: TextStyle(
color: Colors.yellow,
fontSize: 30.0
),
),
Text(
"Flutter",
style: TextStyle(
color: Colors.blue,
fontSize: 20.0
),
),
],
),
);
}
}
复制代码
效果图以下:
效果图以下:
效果图以下:
children中的子控件按照顺序,从右向左排列。
代码以下:
//TextDirection Propery
//TextDirection.rtl
class TextDirection_rtl_Propery extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
child: Row(
//child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
//crossAxisAlignment: CrossAxisAlignment.center,
//crossAxisAlignment: CrossAxisAlignment.end,
textDirection: TextDirection.rtl,
children: <Widget>[
Text(
"Flutter",
style: TextStyle(
color: Colors.yellow,
fontSize: 30.0
),
),
Text(
"Flutter",
style: TextStyle(
color: Colors.blue,
fontSize: 20.0
),
),
],
),
);
}
}
复制代码
效果图以下:
效果图以下:
效果图以下:
决定垂直方向上子控件的布局顺序;解释了垂直方向上的start和end做用。
默认是VerticalDirection.down。
这里仅以CrossAxisAlignment为例,mainAxisAlignment能够自行分析。
代码以下:
//VerticalDirection Propery
//VerticalDirection.down
class VerticalDirection_down_Propery extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
child: Row(
//child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
//crossAxisAlignment: CrossAxisAlignment.center,
//crossAxisAlignment: CrossAxisAlignment.end,
verticalDirection: VerticalDirection.down,//默认是VerticalDirection.down
children: <Widget>[
Text(
"Flutter",
style: TextStyle(
color: Colors.yellow,
fontSize: 30.0
),
),
Text(
"Flutter",
style: TextStyle(
color: Colors.blue,
fontSize: 20.0
),
),
],
),
);
}
}
复制代码
效果图以下:
效果图以下:
效果图以下:
代码以下:
//VerticalDirection Propery
//VerticalDirection.up
class VerticalDirection_up_Propery extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Container(
//child: Row(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
//crossAxisAlignment: CrossAxisAlignment.center,
//crossAxisAlignment: CrossAxisAlignment.end,
verticalDirection: VerticalDirection.up,//默认是VerticalDirection.down
children: <Widget>[
Text(
"Flutter",
style: TextStyle(
color: Colors.yellow,
fontSize: 30.0
),
),
Text(
"Flutter",
style: TextStyle(
color: Colors.blue,
fontSize: 20.0
),
),
],
),
);
}
}
复制代码
效果图以下:
效果图以下:
效果图以下:
用来设置主轴上控件的大小。
根据当前的约束,最大化当前控件的可用空间。 代码以下:
//MainAxisSize Propery
//MainAxisSize.max
class MainAxisSize_max_Propery_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Center(
child: Container(
color: Colors.yellow,
//child: Row(
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
color: Colors.blue,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.pink),
Icon(Icons.adjust, size: 50.0, color: Colors.purple),
Icon(Icons.adjust, size: 50.0, color: Colors.greenAccent),
Container(
color: Colors.orange,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.cyan),
],
),
),
);
}
}
复制代码
效果图以下:
根据当前的约束,最小化当前控件的可用空间。 代码以下:
//MainAxisSize Propery
//MainAxisSize.min
class MainAxisSize_min_Propery_Widget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Center(
child: Container(
color: Colors.yellow,
//child: Row(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
color: Colors.blue,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.pink),
Icon(Icons.adjust, size: 50.0, color: Colors.purple),
Icon(Icons.adjust, size: 50.0, color: Colors.greenAccent),
Container(
color: Colors.orange,
height: 50.0,
width: 50.0,
),
Icon(Icons.adjust, size: 50.0, color: Colors.cyan),
],
),
),
);
}
}
复制代码
效果图以下: