midFlutter
What is a FutureBuilder vs StreamBuilder?
Updated Apr 28, 2026
Short answer
FutureBuilder builds UI based on the latest snapshot of a Future. StreamBuilder builds UI reacting to multiple events from a Stream.
Deep explanation
Both are widgets that manage asynchronous data. FutureBuilder provides ConnectionState (none, waiting, active, done) for a single operation. StreamBuilder listens to a stream and rebuilds its child every time a new event is emitted, providing AsyncSnapshot data.
Real-world example
FutureBuilder: Showing a loading spinner while fetching an article from a REST API. StreamBuilder: Showing live stock price updates changing every second.
Common mistakes
- Instantiating the Future directly inside the `build()` method, which causes the Future to re-trigger on every UI rebuild.
Follow-up questions
- How do you prevent FutureBuilder from recalling the Future on rebuild?