import ‘package:flutter/material.dart‘;
void main(List<String> args) {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text(‘首页‘),
),
body: HomeContent(),
),
);
}
}
/*
StatefulWidget 生命周期:
// 首先执行StatefulWidget 相关方法:
*/
class HomeContent extends StatefulWidget {
@override
State<StatefulWidget> createState() {
print(‘2-执行createState方法创建state对象‘); // StatefulWidget第二个执行的创建State实例的方法
return HomeContentState();
}
HomeContent() {
print(‘1-执行HomeContent构造器方法‘); // 类的构造器方法第一个执行
}
}
class HomeContentState extends State<HomeContent> {
var _counter = 0;
HomeContentState() {
print(‘3-执行HomeContentState 构造器方法‘); // 类的构造器方法是该类第1个执行的
}
@override
void initState() {
// TODO: implement initState
super.initState();
print(‘4-执行了State方法中的initState方法‘); // state类的init方法第2个执行
}
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
print(‘5-执行了State方法中的didChangeDependencies方法‘); // state类的didChangeDependencies方法第3个执行
}
@override
void didUpdateWidget(covariant HomeContent oldWidget) {
// TODO: implement didUpdateWidget
super.didUpdateWidget(oldWidget);
print(‘7-执行了state方法中的didUpdateWidget方法‘); // 这个方法待定!!!!
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
print(‘8-执行了State方法中的dispose方法‘); // 当这个widget不再使用的使用、就会调用这个方法
}
@override
Widget build(BuildContext context) {
print(‘6-执行了State方法中的build方法‘); // 开始执行build方法
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
RaisedButton(
color: Colors.redAccent,
child: Text(
‘+1‘,
style: TextStyle(
fontSize: 20,
color: Colors.white,
),
),
onPressed: () {
print(‘+1‘);
_increase();
},
),
RaisedButton(
color: Colors.orangeAccent,
child: Text(
‘-1‘,
style: TextStyle(
fontSize: 20,
color: Colors.white,
),
),
onPressed: () {
print(‘-1‘);
_decrease();
},
),
],
),
Text(
‘当前计数: $_counter‘,
style: TextStyle(
fontSize: 20,
color: Colors.black,
fontWeight: FontWeight.bold,
),
)
],
),
);
}
// 增加计数
void _increase() {
setState(() {
_counter++;
});
}
// 减少计数
void _decrease() {
setState(() {
_counter--;
});
}
}
// 打印
flutter: 1-执行HomeContent构造器方法
flutter: 2-执行createState方法创建state对象
flutter: 3-执行HomeContentState 构造器方法
flutter: 4-执行了State方法中的initState方法
flutter: 5-执行了State方法中的didChangeDependencies方法
flutter: 6-执行了State方法中的build方法
手动调用-setState() {}, 再次rebuild方法触发
flutter: 6-执行了State方法中的build方法
[flutter-15]StatefulWidget-Lifecycle
原文:https://www.cnblogs.com/comefromchina/p/flutter-statefulewidget-lifecycle.html