Dart track

Roadmap you can actually finish.

Markdown in, static HTML out. One idea per slide; keyboard through the deck, then step to the next lesson when you are ready.

Continue resumes your last slide via local storage in your browser — no accounts.

Table of contents

Curriculum spine

Work top to bottom. Each stop opens the level index: pick a markdown module and read it as a slide deck.

The line is the promise — discrete levels, cumulative skill. Orange nodes are live; muted ones are planned.

  1. Setup + How programs run (1–2 days)

    3 lessons

    Run Dart locally or in DartPad - Understand execution flow: top-to-bottom inside `main()` - `main()`, `print()` - Comments: `//`, `/* */`

  2. Programming basics (Week 1)

    8 lessons

    Write logic with conditions and loops - Types: `int`, `double`, `String`, `bool` - Variables: `var`, explicit types, `final`, `const` - Operators: math + comparison + logical

  3. Functions + collections + records + intro generics (Week 2)

    11 lessons

    Write reusable code and manage lists/maps safely - Functions: params, return values - Named/optional params - Collections: `List`, `Set`, `Map`

  4. OOP foundations (Week 3)

    7 lessons

    Model real-world concepts with classes - Classes/objects, constructors, `this` - Private members: `_field` - Getters/setters (use only when needed)

  5. Mutable vs Immutable + data modeling (Week 4)

    7 lessons

    Prevent bugs by controlling state changes - Mutable vs immutable (core concept) - What mutation is and why it causes hidden bugs - Final fields and immutable classes

  6. Real Dart OOP: abstractions + mixins + extensions + generics deep dive (Week 5)

    12 lessons

    Write scalable architecture with strong typing - `abstract class` - `implements` vs `extends` - Polymorphism

  7. Null safety + error handling (Week 6)

    8 lessons

    Avoid crashes and handle failures cleanly - Null safety: `T` vs `T?` - `?.`, `??`, `??=`, avoid `!` - Exceptions: `try`/`catch`/`finally`, `throw`

  8. JSON + Serialization (Week 7)

    8 lessons

    Read/write data like real apps (APIs, files) - JSON basics: `dart:convert` (`jsonEncode`, `jsonDecode`) - Convert JSON ↔ Dart models - Manual `toJson`/`fromJson`

  9. File I/O + persistence (Week 8)

    5 lessons

    Persist your app data locally - Read/write files (`dart:io`) - Paths, directories (basic) - Async file operations

  10. Async + Event Loop (Week 9)

    8 lessons

    Understand concurrency and avoid blocking - `Future`, `async`/`await` - `Future.wait`, timeouts, retries - Event loop concept

  11. Streams + reactive thinking (Week 10)

    7 lessons

    Handle continuous events and updates - Stream vs Future - StreamController - `listen`/`cancel`

  12. Isolates (Week 11)

    7 lessons

    Parallel CPU work safely - Isolates are Dart (not Flutter) - Separate memory + message passing - When to use isolates

  13. Clean code habits (ongoing)

    7 lessons

    Naming conventions (PascalCase / camelCase / isHasCan) - DRY (don't over-abstract) - Small functions, early returns - Folder structure + separation of concerns

  14. SOLID (Week 12–13)

    7 lessons

    Clean architecture thinking, not just theory - **S:** Split "God classes" - **O:** Extend behavior without editing old logic (Strategy) - **L:** Safe subclass behavior

  15. Design patterns (Week 14–15)

    5 lessons

    Notification sender chooser - `SenderFactory.create(type)` - Dev vs Prod notification families - DevNotificationFactory, ProdNotificationFactory

  16. Dependency Injection + injectable (Week 16+)

    6 lessons

    Scalable and testable apps - Constructor injection - DI container concept - Service locator pitfalls