Flutter布局

基本布局组件

Flutter中的布局是通过组合各种Widget来实现的,这些Widget可以分为两类:容器类Widget和布局类Widget。

常用的容器类Widget包括Container、Padding、Center、Align等,而常用的布局类Widget包括Row、Column、Flex、Wrap、Flow、Stack等。
通过类比的方式,可以将Container类比到HTML中的div标签,而Padding则是一个用于设置内边距的Widget,Center和Align则类似于CSS中的居中布局;
同样的Row/Column/Flex等布局类Widget也可以类比到CSS中的flex布局方式; Wrap和Flow则是一种流式布局,可以用于实现流式布局效果;Stack字面意思 是栈,其实可以类比到CSS中的相对/绝对定位布局方式,可以用于实现重叠布局效果。

滚动组件

Flutter中有很多滚动组件,如SingleChildScrollView、ListView、GridView等,这些组件都是继承自Scrollable类的,所以它们都有滚动的功能。
这里不一一列举,我自己在实际使用中用到的最多是Sliver系列的组件,如SliverAppBar、SliverList、SliverGrid等,这些组件可以用于实现复杂的滚动效果。

详细的使用方法我参考了可滚动组件

约束与尺寸

约束在CSS中是一个不太常见的概念,但在Flutter中是非常重要的,因为Flutter中的布局是通过约束来实现的。
在Flutter中,每个Widget都有一个约束条件,即其父Widget给它的约束条件,而每个Widget都有一个自己的尺寸,即其自身的尺寸。

详细的使用方法可以参考Flutter官方文档

小总结

我在写这一章内容的时候,其实仔细想想我并没有太多的输出,在实际开发过程中,无论是flex布局,还是grid布局,又或者是wrap等等,使用到第三方UI库的
情况是很多的,大概是我个人的开发习惯导致我并不是很喜欢Flutter的布局写法,在习惯了html+css的情况下,我觉得Flutter的布局写法有点繁琐,不够简洁,
不够直观,甚至有时候会有点反直觉。

但是介于是一个回顾,我还是把我个人认为比较重点的一些内容做了一下梳理。

以上~