What are Futures and Streams in Dart?

Updated Apr 28, 2026

Short answer

A Future represents a single asynchronous value or error. A Stream represents a sequence of asynchronous events.

Deep explanation

Futures are used for operations that complete once (like an HTTP request). You await them or use .then(). Streams are for operations that yield multiple values over time (like WebSockets or user inputs). You listen() to them. Streams can be Single-subscription (listened to once) or Broadcast (listened to by multiple listeners).

Real-world example

Using a Future to fetch user profile details on load. Using a Stream to listen to real-time chat messages arriving from Firestore.

Common mistakes

  • Forgetting to cancel StreamSubscriptions, leading to severe memory leaks.

Follow-up questions

  • What is `async*` and `yield`?
  • Difference between Single-subscription and Broadcast streams?

More Flutter interview questions

View all →