面试题答案
一键面试有状态Widget的动态更新机制
- 状态可变:有状态Widget用于需要改变状态的场景。其状态存储在对应的State对象中。
- 状态改变触发更新:当状态发生变化时,Flutter框架会通知Widget树重新构建,从而更新界面显示。
State类的作用
- 存储状态:State类用于存储和管理有状态Widget的可变状态。例如,一个计数器Widget的当前计数数值就可存储在State对象中。
- 生命周期管理:State类包含一系列生命周期方法,如
initState
(Widget插入到树中时调用)、didUpdateWidget
(Widget配置更新时调用)、dispose
(Widget从树中移除时调用)等,开发者可在这些方法中执行相应的初始化、更新、清理等操作。
setState方法触发Widget更新过程
- 调用setState:当调用
setState
方法时,它会标记State对象为脏状态(dirty)。 - 框架检测:Flutter框架在绘制下一帧时,会检测到这些脏状态的State对象。
- 重新构建Widget:框架会调用State对象的
build
方法,重新构建对应的Widget,从而更新界面,反映出状态的变化。例如,在计数器应用中,点击按钮增加计数后调用setState
,框架会重新构建计数器Widget,显示新的计数值。