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
The 'final' keyword
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