The Complete Dart Developer Guide
Learn Dart Programming in depth. Includes basic to advanced topics, exercises, and projects. Last updated to Dart 2.15 (Note: Dart 3 features like records and patterns are not included).
--
Completed
--
Lessons completed
Login
to track your course
progress
Module 1
Course Introduction
A brief introduction to the Dart language and the Dartpad editor.
Module 2
Dart Basics
Write your first hello world program and get familiar with all the basics, including: basic variables and types, working with strings, initialization vs assignment, Dart operators.
Module 3
Dart Type System
Learn about statically and dynamically typed languages. Understand how type inference works in Dart, and how and when to use the var, final, const, and dynamic keywords.
Module 4
Control Flow
Learn how to write programs that make decisions and run code based on some conditions using if/else statements, while and for loops, break and continue keywords, switch statements, and enums.
Module 5
Project: Build a Command Line App
Install Visual Studio Code and the Dart SDK, and learn to build a simple command line app to play rock, paper, and scissors.
Module 6
Collections
Learn how to work with lists, sets, and maps Dart. Also included: collection-if, collection-for, and the spread operator.
Module 7
Project: Data Processing in Dart
Build a useful command line app to process CSV files in Dart, do some number crunching, and generate a report.
Module 8
Null Safety
Learn about all the most important Null Safety features: nullable & non nullable types, flow analysis, the assertion, if-null, and conditional access operators.
Module 9
Functions: Basics
Learn how to work with functions as essential building blocks to better organize your code and make it more reusable. Included: how to declare and use functions, named vs positional arguments, default values and required arguments, the arrow notation, the lexical scope, inner functions.
Module 10
Functions: Advanced
Learn about advanced and effective ways of using functions to write better code: anonymous functions and closures, passing functions as arguments to other functions, function types, functional operators such as forEach, map, where, and reduce, functions with generic arguments.
Module 11
Classes: Basics
Learn how to work with classes as the foundation of object oriented programming, including: how to create classes, regular, named, and const constructors, initializer lists, instance variables and methods, getters and setters, static class variables and methods, how to make things private.
Module 12
Classes: Advanced
Learn about class inheritance and other advanced concepts that you'll need when building complex apps: subclassing, super constructors, overriding methods, abstract classes, implements vs extends, the base Object class, equality & hashCode operators, the toString method, generics, the difference between composition & inheritance, factory constructors, copying objects with copyWith, the cascade operator.
Module 13
Project: Simple eCommerce
Use classes & functions to build a simple command line app that implements the business logic for an eCommerce flow: add items to a cart, view items & checkout.
Module 14
Mixins and Extensions
Learn how to use mixins and extensions more easily extend the functionality of existing types.
Module 15
Error Handling & Exceptions
Learn how to deal with errors in your Dart programs: assertions, built-in errors and exceptions in the Dart SDK, the try, catch, finally, throw, and rethrow keywords.
Module 16
Asynchronous Programming
Learn how to deal with asynchronous operations in Dart: one-time asynchronous operations with Futures, async and await, multiple asynchronous events with Streams, async* and yield, common Future and Stream-based APIs.
Module 17
Project: Weather App
Build a simple command line app to fetch weather data using the MetaWeather API: basic intro to REST APIs, how to create a weather API client with the Dart http package, how to parse JSON data, how to add robust error handling and deal gracefully with connection and API errors.