「这是我参与11月更文应战的第25天,活动概况检查:2021最后一次更文应战」。iOS开发中,咱们都知道控制器的生命周期,从出现到消失。在flutter中咱们的widget的生命周期是怎么样的,一起学习下。

1. Widget生命周期的基本概念

  • 生命周期 生命周期是从创立到毁掉的进程,实际使用中便是各种回调方法(函数调用)。 意图便是为了让咱们知道封装好的Widget处于什么样的状况
  • 效果 咱们通过监听Widget的生命周期,做出对应的操作,比如initState初始化数据:创立数据或许发送网络请求。dispose的时分内存管理,毁掉数据,监听者或许Timer等。

2. Widget的生命周期

2.1 StatelessWidget

对于StatelessWidget来说没有状况,因而只有

  • 初始化init
  • build创立(每次页面制作会调用build)

2.2 StatefulWidget

  • init初始化

Flutter学习-27-Flutter的生命周期

  • createState

createState是创立Widget的state的时分创立的,这个方法只调用一次

Flutter学习-27-Flutter的生命周期

  • state的init

咱们创立State的时分会履行初始化方法,只会履行一次

Flutter学习-27-Flutter的生命周期

  • initState()

initState创立state的时分调用,只会履行一次,通常咱们会在这里做些数据方面的处理或许一些初始化操作,此时view还没有加载,类似咱们的viewDidload

Flutter学习-27-Flutter的生命周期

  • didChangeDependencies

didChangeDependenciesinitState后当即调用,之后在StatefulWidget依靠的InheritedWidget发生变化后,didChangeDependencies才会调用,因而didChangeDependencies可以屡次被调用。后边咱们会介绍InheritedWidget数据同享

Flutter学习-27-Flutter的生命周期

  • build

build是制作页面的时分调用,初始化的时分在didChangeDependencies后调用,咱们主动调用setState()的时分会重新调用build方法进行制作页面渲染,通常咱们在build主要是创立widget,调用其他方法会影响渲染效率

Flutter学习-27-Flutter的生命周期

  • addPostFrameCallback addPostFrameCallback是在渲染完毕都进行调用,一般是在initState中调用,只会调用一次。

Flutter学习-27-Flutter的生命周期

  • didUpdateWidget 组件更新的时分会进行调用,通常widget初始化后会调用一次

Flutter学习-27-Flutter的生命周期

  • deactivate 移除组件的时分调用

Flutter学习-27-Flutter的生命周期

  • disposeWidget毁掉的时分,调用State dispose,咱们一般在dispose做一些撤销监听,毁掉定时器动画等操作。和init State相对使用

Flutter学习-27-Flutter的生命周期