Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Dart: The Complete Developer's Guide
Introduction
Dart: The Complete Developer's Guide (1:13)
Exercise: Meet Your Classmates and Instructor
ZTM Plugin + Understanding Your Video Player
Making the most of this course (3:34)
Introduction to Dart (4:13)
Introduction to Dartpad (2:05)
Set Your Learning Streak Goal
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)
Conversations 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)
Let's Have Some Fun (+ Free Resources)
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)
Unlimited Updates
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)
Course Check-In
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 use input with stdin from dart:io (4:03)
Implementing the game loop (2:43)
Implementing the game logic (8:55)
Implementing a new life system
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)
Exercise: Imposter Syndrome (2:55)
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)
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)
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 notations (1:29)
The global and local scope (2:22)
Inner Functions (2:00)
Global mutable state and functions with side effects (4:05)
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)
Ecercise: Implement the 'firstWhere' function (3:35)
The 'reduce' method (2:46)
Combining functional operators (6:01)
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)
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 'copyWiith' (3:57)
The cascade operator (4:15)
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)
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)
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)
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)
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)
Where To Go From Here?
Thank You! (1:17)
Review This Course!
Become An Alumni
Learning Guideline
ZTM Events Every Month
LinkedIn Endorsements
Overriding 'hashCode' and the Equatable package
This lecture is available exclusively for ZTM Academy members.
If you're already a member,
you'll need to login
.
Join ZTM To Unlock All Lectures