This course was created with the
course builder. Create your online course today.
Start now
Create your course
with
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)
Creating a Weather API Client with the Dart http package
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock