Autoplay
Autocomplete
Previous Lesson
Complete and Continue
The Complete Dart Developer Guide
1. Introduction
Making the most of this course (3:35)
Join "Code With Andrea" on Discord
Introduction to Dart (4:13)
Introduction to Dartpad (2:05)
2. Dart Basics
Section Intro (0:55)
The main method (1:21)
Hello world (1:55)
Variable declaration and initialization (3:24)
Basic types (2:47)
Exercise: printing variables (1:13)
String Concatenation & Interpolation (5:06)
Exercise: String interpolation (1:46)
String Escaping (4:00)
Multi-line strings (1:34)
Basic String operations: uppercase and lowercase (3:33)
Initialization vs Assignment (1:55)
Exercise: Lowercase and uppercase strings (0:58)
Finding and replacing strings (4:24)
Conversions between types (4:29)
Arithmetic operators (3:31)
Exercise: temperature conversion (2:25)
Increment & decrement operators (3:16)
Logical & Relational operators (3:34)
Ternary conditional operator (2:24)
Hex format, bitwise & shifting operators (4:17)
Comments (4:12)
Expressions & statements (1:55)
3. Dart type system
Section Intro (0:49)
Static vs Dynamic Languages (3:41)
Type inference with var (1:11)
The final keyword (2:26)
The const keyword (2:20)
Exercise: var, final and const (2:31)
The dynamic keyword (2:17)
4. Control flow
Section Intro (0:37)
If/else statements (3:31)
Exercise: if/else statements (2:43)
while loops (2:55)
for loops (2:48)
Exercise: fizz buzz (3:20)
break and continue (3:50)
switch statements (3:37)
enumerations (5:19)
Exercise: simple calculator (2:36)
5. Project: Building a command line app
Section intro (1:48)
Installing the Dart SDK (6:54)
Installing and configuring VS Code (4:06)
Project Brief: Rock, Paper & Scissors (2:10)
Creating a command line app (1:59)
Pseudocode for the game logic (1:50)
Getting user input with stdin from dart:io (4:03)
Implementing the game loop (2:43)
Implementing the game logic (8:55)
6. Collections
Section Intro (0:48)
Lists (4:01)
Exercise: Sum of the items in a list (1:02)
List methods (3:36)
Type annotations with lists (1:53)
Using var, final, const with lists (2:26)
Sets (3:47)
Exercise: Sets (2:09)
Maps (4:56)
The as operator (1:32)
The null value (1:24)
Iterating on maps (2:56)
Exercise: Pizza Ordering (2:26)
Nested Collections (1:40)
Exercise: Restaurant ratings (1:48)
Collection-if (2:48)
Collection-for (1:33)
Spreads (3:04)
Exercise: Shopping List (2:13)
Copying collections (4:54)
7. Project: Data Processing in Dart
Section Intro (2:29)
Parsing command line arguments (3:22)
Reading files line by line (3:31)
Pseudocode for the processing logic (2:25)
Implementing the processing logic (6:13)
8. Dart Null Safety
Introduction to Null Safety (2:27)
Nullable and non-nullable variables (2:56)
Flow Analysis: Promotion and Definite Assignment (3:28)
The assertion operator (2:08)
The if-null operator (2:28)
Null Safety with type inference (1:25)
Null Safety with collections (2:23)
The conditional access operator & the billion dollar mistake (3:17)
9. Functions: Basics
Section Intro (0:58)
Intro to functions (1:30)
Function arguments (4:30)
Return values (1:59)
Exercise: Sum of a list of numbers (2:25)
Named and positional arguments (2:35)
Required and default values (5:02)
Default positional arguments (2:16)
Exercise: Pizza ordering with functions (2:36)
Fat arrow notation (1:29)
The global and local scope (2:22)
Inner Functions (2:00)
Global mutable state and functions with side effects (4:05)
10. Functions: Advanced
Section Intro (0:43)
Anonymous functions (2:51)
Functions as first class objects (2:45)
Function types (3:37)
Closures (2:10)
The forEach method (3:44)
The map method (1:36)
Iterable and toList() (2:37)
Code reuse with anonymous functions and generics (7:49)
The where and firstWhere methods (3:10)
Exercise: Implement the where function (2:43)
Exercise: Implement the firstWhere function (3:35)
The reduce method (2:46)
Combining functional operators (6:01)
11. Classes: Basics
Section Intro (0:42)
Introduction to classes (3:52)
Instance methods (3:32)
Class constructors and the this keyword (1:59)
Initializer lists and the shorthand syntax (4:46)
Classes with immutable members (1:51)
Exercise: Creating a Person class (2:58)
Type safety with classes (2:01)
const constructors (2:35)
Named constructors (3:49)
Named constructors: temperature example (2:51)
Getters and setters (3:05)
Exercise: Restaurant ratings with classes (2:58)
Static methods and variables (3:14)
Private variables and methods (5:28)
Wrap up (1:13)
12. Classes: Advanced
Section Intro (1:24)
VS Code Dart Setup with Null Safety (7:30)
Introduction to inheritance / subclassing (4:17)
The super constructor (3:43)
Overriding methods (3:07)
Abstract classes (6:30)
Exercise: Area and Perimeter (2:36)
Interfaces and the difference between implements and extends (5:31)
The base Object class (2:00)
The toString() method (2:51)
The equality operator and the covariant keyword (4:22)
Exercise: Implement the + and * operators (1:49)
Overriding hashCode and the Equatable package (5:43)
Using classes with generics (3:16)
Composition vs inheritance: Flutter widget hierarchy example (3:49)
Factory constructors and reading JSON data (10:21)
Exercise: JSON Serialization (3:03)
Copying objects with copyWith (3:57)
The cascade operator (4:15)
13. Project: Simple eCommerce
Simple eCommerce store: Overview (3:04)
Creating the Product, Item, Cart classes (2:27)
Adding the interactive prompt (7:07)
Adding items to the cart (5:53)
Checkout functionality (4:23)
Project structure and wrap-up (3:29)
14. Mixins & Extensions
Section Intro (1:27)
Creating and using mixins (4:42)
Mixins: Drawbacks (2:35)
Extensions (2:59)
Extensions with generic type constraints (4:10)
Exercise: Range extension (2:20)
15. Error Handling & Exceptions
Section Intro (1:15)
Errors vs Exceptions (1:35)
Assertions (5:29)
Exceptions: throw, try, catch, finally, rethrow (7:45)
Exercise: Email validation (3:23)
16. Async Programming
Section Intro (1:44)
Futures, then, catchError, whenComplete (5:04)
async and await (4:12)
Future.value and Future.error (2:36)
Exercise: Countdown with Futures (3:10)
Streams (4:44)
Stream generators: async* and yield (3:51)
Exercise: Fizz-buzz with streams (2:15)
Stream constructors (2:06)
Stream methods (3:40)
Single / multiple subscription streams (1:45)
17. Weather App
Weather App Overview (1:49)
REST API Basics (2:35)
Creating the command-line app (1:32)
Creating a Weather API Client with the Dart http package (5:48)
Reading the response status code and data (3:50)
Completing the Weather API client (4:14)
Parsing JSON Data (6:37)
Error Handling and Wrap up (7:30)
Conclusion & Next Steps
BONUS Content: Free Dart eBook & Next Steps (1:37)
Teach online with
const constructors
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock