Dart Foundations
Flutter is Dart
Section titled “Flutter is Dart”Before a single widget, we start with the language, because every line of Flutter you write is Dart. The framework’s shape — immutable widgets, const constructors, async/await in your build logic, mixins like SingleTickerProviderStateMixin — is a direct consequence of Dart’s features. Learn the language well and Flutter stops being a pile of magic incantations.
What this module covers
Section titled “What this module covers”| Lesson | What you’ll learn |
|---|---|
| Dart language tour | Types, variables, functions, collections — the essentials, fast |
| Null safety | Sound null safety, the operators, and flow analysis |
| Classes & mixins | Constructors (named/factory/const), mixins, extensions, enums |
| Async in Dart | Future, async/await, Stream, and the single-threaded event loop |
Why these four, specifically
Section titled “Why these four, specifically”These aren’t a random language tour — each one shows up constantly in Flutter code:
flowchart LR ns["Null safety"] --> w["safe widget props, optional params"] cc["const constructors"] --> perf["cheap widget rebuilds"] mx["mixins"] --> st["State mixins (tickers, observers)"] as["async / Stream"] --> ui["FutureBuilder, StreamBuilder"]
- Null safety decides how you model optional widget properties and data.
constconstructors are the single biggest lever for Flutter performance — aconstwidget is skipped on rebuild.- Mixins are how Flutter adds capabilities to your
Stateclasses. - Async and Streams are how your UI talks to the network, databases, and time.