# 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等
- 导读
- Java知识
- Java基本程序设计结构
- 【基础知识】Java基础
- 【源码分析】Okio
- 【源码分析】深入理解i++和++i
- 【专题分析】JVM与GC
- 【面试清单】Java基本程序设计结构
- 对象与类
- 【基础知识】对象与类
- 【专题分析】Java类加载过程
- 【面试清单】对象与类
- 泛型
- 【基础知识】泛型
- 【面试清单】泛型
- 集合
- 【基础知识】集合
- 【源码分析】SparseArray
- 【面试清单】集合
- 多线程
- 【基础知识】多线程
- 【源码分析】ThreadPoolExecutor源码分析
- 【专题分析】volatile关键字
- 【面试清单】多线程
- Java新特性
- 【专题分析】Lambda表达式
- 【专题分析】注解
- 【面试清单】Java新特性
- Effective Java笔记
- Android知识
- Activity
- 【基础知识】Activity
- 【专题分析】运行时权限
- 【专题分析】使用Intent打开三方应用
- 【源码分析】Activity的工作过程
- 【面试清单】Activity
- 架构组件
- 【专题分析】MVC、MVP与MVVM
- 【专题分析】数据绑定
- 【面试清单】架构组件
- 界面
- 【专题分析】自定义View
- 【专题分析】ImageView的ScaleType属性
- 【专题分析】ConstraintLayout 使用
- 【专题分析】搞懂点九图
- 【专题分析】Adapter
- 【源码分析】LayoutInflater
- 【源码分析】ViewStub
- 【源码分析】View三大流程
- 【源码分析】触摸事件分发机制
- 【源码分析】按键事件分发机制
- 【源码分析】Android窗口机制
- 【面试清单】界面
- 动画和过渡
- 【基础知识】动画和过渡
- 【面试清单】动画和过渡
- 图片和图形
- 【专题分析】图片加载
- 【面试清单】图片和图形
- 后台任务
- 应用数据和文件
- 基于网络的内容
- 多线程与多进程
- 【基础知识】多线程与多进程
- 【源码分析】Handler
- 【源码分析】AsyncTask
- 【专题分析】Service
- 【源码分析】Parcelable
- 【专题分析】Binder
- 【源码分析】Messenger
- 【面试清单】多线程与多进程
- 应用优化
- 【专题分析】布局优化
- 【专题分析】绘制优化
- 【专题分析】内存优化
- 【专题分析】启动优化
- 【专题分析】电池优化
- 【专题分析】包大小优化
- 【面试清单】应用优化
- Android新特性
- 【专题分析】状态栏、ActionBar和导航栏
- 【专题分析】应用图标、通知栏适配
- 【专题分析】Android新版本重要变更
- 【专题分析】唯一标识符的最佳做法
- 开源库源码分析
- 【源码分析】BaseRecyclerViewAdapterHelper
- 【源码分析】ButterKnife
- 【源码分析】Dagger2
- 【源码分析】EventBus3(一)
- 【源码分析】EventBus3(二)
- 【源码分析】Glide
- 【源码分析】OkHttp
- 【源码分析】Retrofit
- 其他知识
- Flutter
- 原生开发与跨平台开发
- 整体归纳
- 状态及状态管理
- 零碎知识点
- 添加Flutter到现有应用
- Git知识
- Git命令
- .gitignore文件
- 设计模式
- 创建型模式
- 结构型模式
- 行为型模式
- RxJava
- 基础
- Linux知识
- 环境变量
- Linux命令
- ADB命令
- 算法
- 常见数据结构及实现
- 数组
- 排序算法
- 链表
- 二叉树
- 栈和队列
- 算法时间复杂度
- 常见算法思想
- 其他技术
- 正则表达式
- 编码格式
- HTTP与HTTPS
- 【面试清单】其他知识
- 开发归纳
- Android零碎问题
- 其他零碎问题
- 开发思路