
在上一篇中,我们正式迈入了 Flutter 的核心领域:
你已经知道:
状态变化 → UI 自动更新
但你可能还会有这些疑问:
这一篇,我们就来回答这些问题。
在真实 App 中,你一定会遇到:
📌 这些事情,都和 Widget 生命周期 有关。
简单理解:
一个 StatefulWidget 从“创建”到“销毁”的完整过程
就像人一样:
在零基础阶段,你只需要重点掌握 3 个方法:
1️⃣ initState()
2️⃣ build()
3️⃣ dispose()
📌 记住一句话:
initState 只会执行一次
@override
void initState() {
super.initState();
print('页面初始化');
}
⚠️ 注意:
一定要先调用 super.initState()
根据当前状态,构建 UI
@override
Widget build(BuildContext context) {
return Text('Hello');
}
👉 很多次
例如:
📌 非常重要的一句话:
build 不是初始化方法
❌ 请求网络 ❌ 启动定时器 ❌ 创建只需要一次的对象
@override
void dispose() {
print('页面销毁');
super.dispose();
}
📌 记住:
dispose 是善后工作
class LifeCycleDemo extends StatefulWidget {
@override
_LifeCycleDemoState createState() => _LifeCycleDemoState();
}
class _LifeCycleDemoState extends State<LifeCycleDemo> {
int count = 0;
@override
void initState() {
super.initState();
print('initState');
}
@override
Widget build(BuildContext context) {
print('build');
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
setState(() {
count++;
});
},
child: Text('点击 $count'),
),
),
);
}
@override
void dispose() {
print('dispose');
super.dispose();
}
}
运行后你会看到:
initState
↓
build
↓
setState → build(多次)
↓
dispose
📌 这是 Flutter 状态组件的核心流程图。
❌ 在 build 里请求接口 ❌ 在 initState 里用 context 做复杂操作 ❌ 忘记调用 super ❌ 不释放资源 ❌ 以为 build 只执行一次
你已经掌握了:
你现在对 Flutter 的理解已经是:
不是“写 UI”,而是“管理状态与生命周期”
initState 初始化 build 渲染界面 dispose 善后清理
《Flutter 零基础入门(二十八):列表 ListView —— 最常用的页面结构》
下一篇我们将正式进入:
从下一篇开始:
你写的将不再是“单页面”,而是“真实业务页面” 📱