什么时候需要Stateful Widget?

  当需要跟用户进行交互时,我们希望,页面上的部分widgets根据用户的操作和指令,做出相应的响应时

Stateful Widget的组成

Stateful Widget由两部分组成:

  • 继承自StatefulWidget的类(the class that extends StatefulWidget)
  • 继承自State的类(the class that extends State)
the class that extends StatefulWidget
  • 这个类会在其createState方法中创建一个State对象
  • 这个类的实例的生存期比其State对象的实例的生成期短
  • 这个类中的数据不可改变
  • 这个类通过构造函数传递信息,与Stateless Widget一样
  • 当数据需要更改时,这个类就会被新创建出来的类取代
the class that extends State
  • 该类中的数据可以改变
  • 它使用build方法来构造UI组件
  • 它可以对用户事件进行响应

Stateful widget的 Build 方法

  • Stateful Widget 通过其继承了State的类中的build方法,来构造UI组件
  • 这种组件可以改变状态,并且实现重绘/渲染
  • 当调用Stateful Widget的setState方法时,其build方法会被重新调用

生命周期有关的方法(LifeCycle Methods)

  1. the class that extends StatefulWidget

    • createState()
  2. the class that extends State

    • build()
      当Widget需要重绘时,Flutter就会调用该方法
    • initState()
      当每次Widget被创建的时候,Flutter也会调用这个方法
    • didChangeDependencies()
      当Flutter检测到数据信息改变导致UI改变调用build方法时,就会调用这个方法;注意,当setState()被调用时,该方法不会被调用
    • didUpdateWidget()
      当Flutter必须丢弃继承自StatefulWidget的类并将其用一个新的类替代时,就会调用这个方法,来将现有的State类与新的StatefulWidget类联系起来
    • setState()
      当需要更新UI或者调用build方法时,可以调用这个方法
    • deactivate()
      当State类从Tree上移除时,就会调用这个方法。主要用于State对象可以从一个Tree移到另一个Tree的时候
    • dispose()
      当继承了State类的对象被销毁时,Flutter就会调用这个方法
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐