生命周期是最重要的,居然才说,真的是要疯狂打脸!!!
废话不多说了,看代码!!
import 'package:flutter/material.dart';
///StatelessWidget生命周期只有createElement与build两个生命周期方法
///StatefulWidget生命周期
///1、初始化时期
///createState、initState
///2、更新期间
///didChangeDependencies、build、didUpdateWidget
///3、销毁期
///deactivate、dispose
class WidgetLifecycle extends StatefulWidget {
///当我们构建一个新的StatefulWidget时,createState会立即diaoyong
///并且这个方法必须被覆盖
@override
_WidgetLifecycleState createState() => _WidgetLifecycleState();
}
class _WidgetLifecycleState extends State<WidgetLifecycle> {
///这是创建Widget时调用的除构造方法外的第一个方法
///类似于Android的:OnCreate与Ios的viewDidLoad
///在这个方法中通常会做一些初始化工作,比如channel的初始化,监听器的初始化等
@override
void initState() {
// TODO: implement initState
super.initState();
}
///当依赖的State对象改变时会被调用
///1、在第一次构建widget时,在initState之后立即调用此方法
///2、如果StatefulWidget依赖于InheritedWidget,那么当当前State所依赖InheritedWidget中的变量改变时会再次调用它
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}
///这是一个必须实现的方法,在这里实现你要呈现的页面内容
///它会在didChangeDependencies之后立即调用
///另外在当前类调用setState之后也会再次调用该方法
@override
Widget build(BuildContext context) {
return Container();
}
///这是一个不常用到的生命周期方法,当父组件需要重新绘制时才会调用
///该方法会携带一个oldWidget参数,可以将其与当前的Widget进行对比以便执行一些额外的逻辑,如
///if(oldWidget.xxx != widget.xxx)
@override
void didUpdateWidget(covariant WidgetLifecycle oldWidget) {
// TODO: implement didUpdateWidget
super.didUpdateWidget(oldWidget);
}
///很少使用,在组件被移除时调用在dispose之前调用
@override
void deactivate() {
// TODO: implement deactivate
super.deactivate();
}
///常用,组件被销毁时嗲用
///通常在该方法中执行一些资源的释放工作,比如:监听器的卸载,channel的销毁等
@override
void dispose() {
// TODO: implement dispose
super.dispose();
}
}
网友评论