I've interviewed at 6+ Flutter companies over the past year and noticed the same questions keep coming up — regardless of the company size or role level.
Here are the ones that actually matter for beginner to mid-level roles, with the key points interviewers are really listening for.
1. What's the difference between StatelessWidget and StatefulWidget?
The short answer: StatelessWidget is immutable — it renders once and never changes. StatefulWidget owns a State object that can call setState() to trigger a rebuild.
What interviewers want to hear: "I reach for StatelessWidget by default and only introduce State when I actually need the widget to react to changes." Overusing StatefulWidget is a red flag.
2. What is BuildContext?
This trips up a lot of candidates. BuildContext is a handle to the widget's location in the widget tree — it's how Flutter resolves Theme.of(context), Navigator.of(context), and similar lookups.
The gotcha: using a BuildContext after the widget has been disposed causes a crash. Interviewers love asking this.
3. var, final, and const — what's the difference?
-
var— type inferred, can be reassigned -
final— set once at runtime, cannot be reassigned -
const— compile-time constant, deeply immutable
The key distinction candidates miss: const is evaluated at compile time, final is evaluated at runtime. A DateTime.now() can be final but never const.
4. What are Keys and when should you use them?
Keys help Flutter identify widgets when the widget tree changes structure — especially in lists with reorderable or removable items.
Without keys, Flutter matches widgets by type and position. If you remove item 0 from a list, Flutter might incorrectly reuse the state of item 1. A Key prevents this.
Most candidates know they exist but struggle to explain when they're needed. That's the interview question.
5. async/await vs Future — what's the difference?
Future is the object that represents a value that will be available later. async/await is syntax sugar for working with Futures — it makes async code read like synchronous code.
They're not alternatives — async/await is built on top of Future. You still need to understand Future chaining (.then(), .catchError()) for interviews.
6. What's the Flutter widget lifecycle?
For StatefulWidget:
createState()-
initState()— runs once, good for subscriptions and controllers -
didChangeDependencies()— runs when an InheritedWidget changes -
build()— runs every rebuild -
didUpdateWidget()— runs when parent rebuilds with new config -
dispose()— cleanup: cancel subscriptions, dispose controllers
Interviewers specifically ask about initState vs didChangeDependencies and what should go in each.
7. Hot reload vs hot restart
- Hot reload — injects updated code, preserves state. Works for UI changes.
-
Hot restart — restarts the app from scratch, resets state. Needed for changes to
main(), global variables, orinitState().
Simple question, but surprisingly many candidates mix these up under pressure.
8. Provider vs Riverpod vs BLoC — which should you use?
The honest answer: it depends on team size and complexity.
- Provider — simple, built on InheritedWidget, good for small apps
- Riverpod — Provider's spiritual successor, compile-safe, testable, better DX
- BLoC — explicit events/states, great for large teams needing strict separation
The interview trap: many candidates pick one and dismiss the others. The right answer is knowing the trade-offs and defending your choice with context.
Want to prep all 39 beginner questions?
These 8 are just the ones I see most often. There are 31 more in the beginner track alone — covering Dart fundamentals, rendering, navigation, and layout.
I built PrepFlutter specifically for this — structured tracks from beginner to advanced, plus a live coding section with real interview problems. Free to use.
The full beginner track: prepflutter.com/tracks/beginner
If you're preparing for Flutter interviews, drop a comment with the question that stumped you most — happy to help.
Top comments (2)
Very helpful article!! Thank you for putting this together. Interestingly, two of these questions were actually asked in my Flutter interview. Really appreciate the effort and insights. Keep up the great work!
Very helpful content Thanks Nikunj!