Section 1: Setting Up the Tools and a Flutter Overview
- Install the Flutter SDK, check it with flutter doctor and set up an Android emulator or a real device
- Flutter's architecture: the framework, the engine and the Impeller renderer
- Project structure, the pubspec.yaml file and adding packages from pub.dev
- Lab: create a first project, run it on the emulator and try hot reload
Section 2: Dart Fundamentals and Null Safety
- Variables, type inference, final and const
- Sound null safety and the ?, !, ?? and ?. operators
- Functions, named and optional parameters, and collections (List, Set, Map) with collection if/for
- Lab: write a Dart program that manages menu items and prices without null risks
Section 3: Object-Oriented Programming in Dart
- Classes, constructors, factory constructors and the primary constructors introduced in Dart 3.13
- Inheritance, mixins, abstract classes and interfaces
- Class modifiers (sealed, final, base, interface) and extension methods
- Lab: design menu and food category classes with primary constructors
Section 4: Records, Patterns and Sealed Classes
- Records for returning several values from a function
- Pattern matching with switch expressions and destructuring
- Exhaustiveness checking with sealed classes, and dot shorthands
- Lab: model order status with a sealed class and a switch expression
Section 5: Workshop Day 1: Async Code and the NovaBite Domain Model
- Future, async and await for work that has to wait for a result
- Stream and StreamController for data that changes over time
- Handling errors with try/catch in asynchronous code
- Workshop: build MenuItem, CartItem and Order, calculate totals, discounts and tax, and simulate loading the menu asynchronously