ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# StatefulWidget的生命周期 ![](https://img.kancloud.cn/24/64/24644169c70ef1ff4c232f74f172f0ce_701x869.png) # 基础组件 1、Text组件的fontSize属性和textScaleFactor属性区别: * fontSize可以精确指定字体大小,textScaleFactor只能通过缩放比例来控制 * textScaleFactor主要用于系统字体大小设置改变时对Flutter应用字体进行全局调整,而fontSize通常用于单个文本,字体大小不随系统字体大小而变化 2、StatefulWidget的setState方法 当StatefulWidget的状态变更时,调用setState方法告知框架,框架会对控件树进行重绘: ```dart setState(() { _counter++; }) ``` 3、`Row`和`Column`都只会在主轴方向占用尽可能大的空间,而纵轴的长度则取决于他们最大子元素的长度。 4、Row默认只有一行,如果超出屏幕不会折行。我们把超出屏幕显示范围会自动折行的布局称为流式布局 5、Align和Stack对比: * 定位参考系统不同;`Stack`/`Positioned`定位的的参考系可以是父容器矩形的四个顶点;而`Align`则需要先通过`alignment`参数来确定坐标原点,不同的`alignment`会对应不同原点,最终的偏移是需要通过`alignment`的转换公式来计算出。 * `Stack`可以有多个子元素,并且子元素可以堆叠,而`Align`只能有一个子元素,不存在堆叠。 6、容器类Widget和布局类Widget的区别: * 布局类Widget接收一个Widget数组,按照一定方式排列其子Widget;而容器类Widget只接收一个Widget,只是对Widget进行包装,对其添加一些修饰、变换或限制大小等 * 布局类Widget直接或间接继承自MultiChildRenderObjectWidget;而容器类Widget直接或间接继承自SingleChildRenderObjectWidget * 布局类Widget包括Row、Column、Flex、Wrap、Flow、Stack、Positioned、Align等;容器类Widget包括Padding、ConstrainedBox、SizedBox、DecoratedBox、Transform、Container等