flutter 生命周期
Published:
·
LastMod: July 09, 2023
·
383 words
flutter 生命周期 🔗
createState()
: When the Framework is instructed to build a StatefulWidget, it immediately callscreateState()
mounted
is true: WhencreateState
creates your state class, abuildContext
is assigned to that state.buildContext
is, overly simplified, the place in the widget tree in which this widget is placed. Here’s a longer explanation. All widgets have abool this.mounted
property. It is turned true when thebuildContext
is assigned. It is an error to callsetState
when a widget is unmounted.initState()
: This is the first method called when the widget is created (after the class constructor, of course.)initState
is called once and only once. It must callsuper.initState()
.didChangeDependencies()
: This method is called immediately afterinitState
on the first time the widget is built.build()
: This method is called often. It is required, and it must return a Widget.didUpdateWidget(Widget oldWidget)
: If the parent widget changes and has to rebuild this widget (because it needs to give it different data), but it’s being rebuilt with the sameruntimeType
, then this method is called. This is because Flutter is re-using the state, which is long lived. In this case, you may want to initialize some data again, as you would ininitState
.setState()
: This method is called often from the framework itself and from the developer. Its used to notify the framework that data has changeddeactivate()
: Deactivate is called when State is removed from the tree, but it might be reinserted before the current frame change is finished. This method exists basically because State objects can be moved from one point in a tree to another.dispose()
:dispose()
is called when the State object is removed, which is permanent. This method is where you should unsubscribe and cancel all animations, streams, etc.mounted
is false: The state object can never remount, and error will be thrown ifsetState
is called.
reference 🔗
https://stackoverflow.com/questions/41479255/life-cycle-in-flutter