MST

星途 面试题库

面试题:Flutter中State的生命周期阶段有哪些及各自作用

请详细阐述Flutter中State的各个生命周期阶段,例如initState、didChangeDependencies、build、setState、deactivate、dispose等,说明每个阶段在State的生命周期中起到什么作用,以及何时会被调用。
32.2万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试

initState

  • 作用:用于初始化状态,比如初始化一些变量、订阅一些数据等。在这个阶段,State对象被插入到树中,并且只会被调用一次。
  • 调用时机:当State对象第一次插入到Widget树中时调用。

didChangeDependencies

  • 作用:当State对象的依赖发生变化时调用。比如依赖的InheritedWidget发生变化,在这里可以执行一些依赖变化后的操作,如重新获取依赖数据。
  • 调用时机:在initState之后调用,并且每当State对象依赖的InheritedWidget发生变化时也会调用。

build

  • 作用:构建Widget,返回一个Widget树。每次调用setState或依赖的InheritedWidget变化导致重新构建时,都会调用此方法。
  • 调用时机:在initState、didChangeDependencies之后首次调用,后续每当需要更新UI(如调用setState)时都会调用。

setState

  • 作用:通知框架状态发生了变化,框架会重新调用build方法以更新UI。
  • 调用时机:当需要更新State中的数据并反映到UI上时调用。

deactivate

  • 作用:当State对象从树中移除时调用,常用于取消一些订阅或动画。但此State对象可能会重新插入到树中。
  • 调用时机:当State对象从树中移除时调用,例如在Navigator.pop操作导致页面切换时。

dispose

  • 作用:用于释放资源,比如取消动画、取消订阅等。一旦调用此方法,State对象将永远不会再插入到树中。
  • 调用时机:在deactivate之后,当State对象被永久从树中移除时调用,例如页面被销毁。