Interview frequency: …
Short answer
A State usually goes through initState, then didChangeDependencies and build, may receive didUpdateWidget, then dispose on final removal.
Explanation
Put one-time initialization in initState, track inherited dependencies in didChangeDependencies, and clean up controllers and listeners in dispose. Do not run side effects inside build because they may repeat.
Common mistakes
- Creating a subscription inside build.
- Forgetting dispose for an AnimationController or StreamSubscription.