double.infinity 代表 match_parent stack 如果没有父元素定义高度,则以第一个子元素高度为准
double.infinity 代表 match_parent stack 如果没有父元素定义高度,则以第一个子元素高度为准
LayoutBuilder 可以在布局过程中拿到父组件传递的约束信息,然后我们可根据约束信息动态的构建不同的布局。 FittedBox 包裹的子组件会忽略其父组件传递的约束,...
Listener: GestureDetector:
CustomScrollView: 提供一个公共 Scrollable 和 Viewport 组合多个 Sliver,实现统一滑动,子元素都为Sliver。 Sliver名称...
SliverGridDelegateWithMaxCrossAxisExtent 该子类可以快速创建横轴子元素为固定长度的 GridView。SliverGridDelega...
ListView: 可含多个子组件,支持按需加载。 ScrollController: 用来控制可滚动组件的滚动位置。 Scrollbar: 如果要给可滚动组件添加滚动条,只...
顶部导航栏:TabBar + TabBarView + TabController 底部导航栏:BottomNavigationBar
剪裁组件裁剪行为ClipOval圆变矩或矩变圆ClipRRect剪裁为圆角矩形ClipRect剪裁掉溢出部分ClipPath自定义路径剪裁
Transform 变换在绘制阶段,而非布局(layout)阶段,所以无论对子组件怎么变化,其占用空间的大小和位置都是固定不变,因为这些是在布局阶段就确定的。RotatedB...
Align 和 Positioned都可以用于指定子元素相对于父容器的偏移定位,Positioned定位的参考系可以是父容器矩形的四个顶点,而Align则需先通过alignm...
Stack 层叠布局允许子组件按照声明的顺序堆叠起来,使用Positioned封装子组件实现自身相对于父元素各个边的精确的定位。
Wrap和Flow均支持流式布局,即超出屏幕显示范围会自动折行的布局。Flow由于比较复杂很少使用,优先考虑其它布局替代。
Flex布局允许子组件按照一定比例占据父容器空间,Expanded只能作为Flex的子元素,Row和Column都继承自Flex。
WidgetElement说明LeafRenderObjectWidgetLeafRenderObjectElement没有子元素SingleChildRenderObjec...
Flutter 中有两种布局模型: 基于 RenderBox 的盒模型布局。 基于 Sliver 的按需加载列表布局。 任何时候子组件都必须先遵守父组件的约束,Unconst...