Flutter 学习日记(七)–生命周期

时间:2021-7-21 作者:qvyue

生命周期是最重要的,居然才说,真的是要疯狂打脸!!!
废话不多说了,看代码!!

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 {
  ///这是创建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();
  }
}

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。