【笔记】Flutter的线性布局组件

前言

Flutter的线性布局组件学习笔记

线性布局组件

  • Row和Column继承自Flex

Row行组件

  • 主轴方向是从左到右,侧轴方向是从上到下
  • 行组件宽度是自适应的,默认占满一行
  • 对于行组件,只有定义了行组件的高度,侧轴的排列方式才有意义

mainAxisAlignment:主轴排列方式

MainAxisAlignment.start:缺省值,居首显示
MainAxisAlignment.center:居中显示
MainAxisAlignment.end:居尾显示
MainAxisAlignment.spaceBetween:分散显示,首尾距离边距无边距
MainAxisAlignment.spaceEvenly:分散显示,首尾距离边距有边距,中间间距是两边间距的1倍
MainAxisAlignment.spaceArount:分散显示,首尾距离边距有边距,中间间距是两边间距的2倍

crossAxisAlignment:侧轴排列方式

CrossAxisAlignment.start:缺省值,居首显示
CrossAxisAlignment.center:居中显示
CrossAxisAlignment.end:居尾显示
CrossAxisAlignment.spaceBetween:分散显示,首尾距离边距无边距
CrossAxisAlignment.spaceEvenly:分散显示,首尾距离边距有边距,中间间距是两边间距的1倍
CrossAxisAlignment.spaceArount:分散显示,首尾距离边距有边距,中间间距是两边间距的2倍

children:组件子元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import 'package:flutter/material.dart';

void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("文本内容"),
),
body: const App(),
),
));
}

class App extends StatelessWidget {
const App({super.key});

@override
Widget build(BuildContext context) {
return const Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(Icons.home),
Icon(Icons.home),
Icon(Icons.home),
],
);
}
}

Column列组件

  • 主轴方向是从上到下,侧轴方向是从左到右
  • 列组件高度是自适应的,默认占满一列
  • 对于列组件,只有定义了列组件的宽度,侧轴的排列方式才有意义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import 'package:flutter/material.dart';

void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("文本内容"),
),
body: const App(),
),
));
}

class App extends StatelessWidget {
const App({super.key});

@override
Widget build(BuildContext context) {
return const Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(Icons.home),
Icon(Icons.home),
Icon(Icons.home),
],
);
}
}

完成

参考文献

哔哩哔哩——筱筱知晓