Back to courses

Dart: The Complete Developer's Guide

Learn Dart programming in depth from an actual Google Developer Expert. This is the only Dart tutorial + projects course you need to learn Dart and build real-world applications from scratch. Go from Zero To Dart Mastery.

instructor

Taught by: Andrea Bizzotto

Last updated: March 2023

Course overview

We guarantee you that this is the most comprehensive and up-to-date Dart tutorial + projects course that you can find. You will learn Dart from scratch, build your own real-world apps, and become a confident developer in 2023!

What you'll learn

  • Learn Dart in-depth, all the way from beginner to advanced topics
  • How to write command line apps with Dart
  • Fundamental concepts in programming: variables, types, control flow, collections, functions, classes, asynchronous programming & more
  • How to write clear and effective code using best practices
  • Everything needed to understand Flutter, Angular Dart, and Dart on Backend

Why learn Dart with us? The results speak for themselves.

Graduates of Zero To Mastery are now working at Google, Tesla, Amazon, Apple, IBM, Uber, Facebook, Shopify + other top tech companies. They are also working as top freelancers getting paid while working remotely around the world. This can be you.

By enrolling today, you’ll also get to join our exclusive live online community classroom to learn alongside thousands of students, alumni, mentors, TAs and Instructors.

Most importantly, you will learn from an industry expert that has actual real-world experience working with Dart and Flutter and building large-scale mobile apps.

As a Google Developer Expert for Dart and Flutter, Andrea will teach you everything you need to know about Dart, even if you've never written a single line of code before.

This course is perfect for absolute beginners but it also goes well beyond the basics. You'll also learn many advanced topics with clear diagrams and explanations.

Why is this important?

To create your own Flutter apps, you’ll use the Dart programming language every single day. If you want to go beyond simple apps, you must know and understand Dart well.

This course will give you the foundation you need to build complex Flutter apps by covering the more advanced Dart features.

More importantly, you won't just learn by watching Andrea code, you will learn hands-on with multiple exercises and projects to practice and re-enforce what you're learning so that you can build projects of your own.

The topics you'll learn in this Dart course

The course follows a carefully designed structure and guides you through all these topics:

  • Dart Basics
  • Dart Type System
  • Control Flow
  • Project: Build a Command Line App
  • Collections
  • Project: Data Processing in Dart
  • Null Safety
  • Functions: Basics
  • Functions: Advanced
  • Classes: Basics
  • Classes: Advanced
  • Project: Simple eCommerce
  • Mixins and Extensions
  • Error Handling & Exceptions
  • Asynchronous Programming
  • Project: Weather App

You will learn Dart language features using Dartpad which is a free online editor for writing Dart code. But you will also learn how to write command line applications in Dart, using Visual Studio Code.

Why learn Dart at all?

Dart is the programming language behind Flutter: Google's UI toolkit for building beautiful and fast native apps for iOS, Android, web and beyond. With Dart, you can build Flutter apps across all these different platforms with a single codebase.

According to GitHub, Dart was the fastest growing programming language in 2019, making it a very valuable language to learn.

Since the introduction of Flutter by Google and adoption of major companies like Alibaba, Dart + Flutter have exploded in popularity among mobile developers as an alternative to React Native.

Course Structure

This course is a step-by-step guide that can teach you from scratch but is also easy to use as a reference to explore specific topics in depth.

If you're new to Dart and programming in general, this is a great place to start. Come join us and follow the course from beginning to end.

Or if you already have some experience and you want to fill some gaps in your knowledge, you can jump right into the sections that are most relevant.

The course also comes with a complete GitHub page which includes:

  • A complete list of all the course lessons, so that you can more easily find the content you need
  • All the course exercises, along with their solutions
  • All the course projects

What's the bottom line?

This course is not about making you just code along without understanding the principles so that when you are done with the course you don’t know what to do other than watch another tutorial... No!

This course will push you and challenge you to go from an absolute beginner in Dart to someone that is a confident and effective programmer 💪.

And you have nothing to lose. You can start learning right now and if this course isn't everything you expected, we'll refund you 100% within 30 days. No hassles and no questions asked.

When's the best time to get started? Today!

There's never a bad time to learn in-demand skills. But the sooner, the better. So start learning Dart today by joining the ZTM Academy. You'll have a clear roadmap to developing the skills to build your own projects, get hired, and advance your career.

Start learning now
Expand Overview

What you'll build

The best way you learn is by doing. Not just watching endless tutorials. That's why a key part of this course is the real-world projects that you'll get to build. Plus they'll look great on your portfolio.

ECommerce with Dart

ECommerce with Dart

You'll learn to think critically about business logic of an eCommerce application (e.g. select products, add items to the shopping cart, checkout) and use the knowledge to build complex apps in the future.

RPS Command Line

RPS Command Line

A command line game you will create using Dart to play the always popular Rock Paper Scissors game. You'll learn to take user inputs and generate random computer outputs to play against the computer.

start learning now

Course curriculum

To make sure this course is a good fit for you, you can start learning Dart for free right now by clicking any of the PREVIEW links below.

Introduction

6 lectures

Dart: The Complete Developer's Guide1:13

PREVIEW

Exercise: Meet Your Classmates and Instructor

START

How-to's: Speed up videos, Downloading videos, Subtitles

START

Making the most of this course3:34

PREVIEW

Introduction to Dart4:13

PREVIEW

Introduction to Dartpad2:05

PREVIEW

Dart Basics

24 lectures

Section Intro0:55

PREVIEW

The 'main' method1:21

PREVIEW

Hello world1:55

PREVIEW

Variable declaration and initialization3:24

PREVIEW

Basic types2:47

PREVIEW

Exercise: printing variables1:13

PREVIEW

String Concatenation & Interpolation5:06

START

Exercise: String interpolation1:46

START

String Escaping4:00

START

Multi-line strings1:34

START

Basic String operations: uppercase and lowercase3:33

START

Initialization vs Assignment1:55

START

Exercise: Lowercase and uppercase strings0:58

START

Finding and replacing strings4:24

START

Conversations between types4:29

START

Arithmetic operators3:31

START

Exercise: temperature conversion2:25

START

Increment & decrement operators3:16

START

Logical & Relational operators3:34

START

Ternary conditional operator2:24

START

Hex format, bitwise & shifting operators4:17

START

Comments4:12

START

Expressions & statements1:55

START

Unlimited Updates

START

Dart type system

7 lectures

Section Intro0:49

START

Static vs Dynamic Languages3:41

START

Type inference with 'var'1:11

START

The 'final' keyword2:26

START

The 'const' keyword2:20

START

Exercise: 'var', 'final' and 'const'2:31

START

The 'dynamic' keyword2:17

START

Control flow

10 lectures

Section Intro0:37

START

If/else statements3:31

START

Exercise: if/else statements2:43

START

while loops2:55

START

for loops2:48

START

Exercise: fizz buzz3:20

START

'break' and 'continue'3:50

START

switch statements3:37

START

enumerations9:29

START

Exercise: simple calculator2:36

START

Project: Building a command line app

9 lectures

Section Intro1:48

START

Installing the Dart SDK6:54

START

Installing and configuring VS Code4:06

START

Project Brief: Rock, Paper & Scissors2:10

START

Creating a command line app1:59

START

Pseudocode for the game logic1:50

START

Getting use input with stdin from dart:io4:03

START

Implementing the game loop2:43

START

Implementing the game logic17:50

START

Collections

21 lectures

Section Intro0:48

START

Lists4:01

START

Exercise: Sum of the items in a list1:02

START

List methods3:36

START

Type annotations with lists1:53

START

Using 'var', 'final', 'const' with lists2:26

START

Sets3:47

START

Exercise: Sets2:09

START

Maps4:56

START

The 'as' operator1:32

START

The 'null' value1:24

START

Iterating on maps2:56

START

Exercise: Pizza Ordering2:26

START

Nested Collections1:40

START

Exercise: Restaurant ratings1:48

START

Collection-if2:48

START

Collection-for1:33

START

Spreads3:04

START

Exercise: Shopping List2:13

START

Copying collections4:54

START

Exercise: Imposter Syndrome2:55

START

Project: Data Processing in Dart

5 lectures

Section Intro2:29

START

Parsing command line arguments3:22

START

Reading files line by line3:31

START

Pseudocode for the processing logic2:25

START

Implementing the processing logic6:13

START

Dart Null Safety

8 lectures

Introduction to Null Safety2:27

START

Nullable and non-nullable variables2:56

START

Flow Analysis: Promotion and Definite Assignment3:28

START

The assertion operator2:08

START

The if-null operator2:28

START

Null Safety with type inference1:25

START

Null Safety with collections2:23

START

The conditional access operator & the billion dollar mistake3:17

START

Functions: Basics

13 lectures

Section Intro0:58

START

Intro to functions1:30

START

Function arguments4:30

START

Return values1:59

START

Exercise: Sum of a list of numbers2:25

START

Named and positional arguments2:35

START

Required and default values5:02

START

Default positional arguments2:16

START

Exercise: Pizza ordering with functions2:36

START

Fat arrow notations1:29

START

The global and local scope2:22

START

Inner Functions2:00

START

Global mutable state and functions with side effects4:05

START

Functions: Advanced

14 lectures

Section Intro0:43

START

Anonymous functions2:51

START

Functions as first class objects2:45

START

Function types3:37

START

Closures2:10

START

The 'forEach' method3:44

START

The 'map' method1:36

START

'Iterable' and 'toList()'2:37

START

Code reuse with anonymous functions and generics7:49

START

The 'where' and 'firstWhere' methods3:10

START

Exercise: Implement the 'where' function2:43

START

Ecercise: Implement the 'firstWhere' function3:35

START

The 'reduce' method2:46

START

Combining functional operators6:01

START

Classes: Basics

16 lectures

Section Intro0:42

START

Introduction to classes3:52

START

Instance methods3:32

START

Class constructors and the 'this' keyword1:59

START

Initializer lists and the shorthand syntax4:46

START

Classes with immutable members1:51

START

Exercise: Creating a 'Person' class2:58

START

Type safety with classes2:01

START

'const' constructors2:35

START

Named constructors3:49

START

Named constructors: temperature example2:51

START

Getters and setters3:05

START

Exercise: Restaurant ratings with classes2:58

START

Static methods and variables3:14

START

Private variables and methods5:28

START

Wrap up1:13

START

Classes: Advanced

19 lectures

Section Intro1:24

START

VS Code Dart Setup with Null Safety7:30

START

Introduction to inheritance/subclassing4:17

START

The 'super' constructor3:43

START

Overriding methods3:07

START

Abstract classes6:30

START

Exercise: Area and Perimeter2:36

START

Interfaces and the difference between 'implements' and 'extends'5:31

START

The base 'Object' class2:00

START

The 'toString()' method2:51

START

The equality operator and the 'covariant' keyword4:22

START

Exercise: Implement the + and * operators1:49

START

Overriding 'hashCode' and the Equatable package5:43

START

Using classes with generics3:16

START

Composition vs inheritance: Flutter widget hierarchy example3:49

START

Factory constructors and reading JSON data10:21

START

Exercise: JSON Serialization3:03

START

Copying objects with 'copyWiith'3:57

START

The cascade operator4:15

START

Project: Simple eCommerce

6 lectures

Simple eCommerce store: Overview3:04

START

Creating the Product, Item, Cart classes2:27

START

Adding the interactive prompt7:07

START

Adding items to the cart5:53

START

Checkout functionality4:23

START

Project structure and wrap-up3:29

START

Mixins & Extensions

6 lectures

Section Intro1:27

START

Creating and using mixins4:42

START

Mixins: Drawbacks2:35

START

Extensions2:59

START

Extensions with generic type constraints4:10

START

Exercise: Range extension2:20

START

Error Handling & Exceptions

5 lectures

Section Intro1:15

START

Errors vs Exceptions1:35

START

Assertions5:29

START

Exceptions: 'throw', 'try', 'catch', 'finally', 'rethrow'7:45

START

Exercise: Email validation3:23

START

Async Programming

11 lectures

Section Intro1:44

START

Futures, 'then', 'catchError', 'whenComplete'5:04

START

'async' and 'await'4:12

START

'Future.value' and 'Future.error'2:36

START

Exercise: Countdown with Futures3:10

START

Streams4:44

START

Stream generators: 'async*' and 'yield'3:51

START

Exercise: fizz-buzz with streams2:15

START

Stream constructors2:06

START

Stream methods3:40

START

Single/multiple subscription streams1:45

START

Weather App

8 lectures

Weather App Overview1:49

START

REST API Basics2:35

START

Creating the command-line app1:32

START

Creating a Weather API Client with the Dart http package5:48

START

Reading the response status code and data3:50

START

Completing the Weather API Client4:14

START

Parsing JSON Data6:37

START

Error Handling and Wrap up7:30

START

Conclusion & Next Steps

5 lectures

Thank You!1:17

START

Review This Course!

START

Become An Alumni

START

LinkedIn Endorsements

START

Learning Guideline

START

Meet your instructor

Your Dart instructor (Andrea) isn't just an expert with years of real-world professional experience. He has been in your shoes. He makes learning fun. He makes complex topics feel simple. He will motivate you. He will push you. And he will go above and beyond to help you succeed.

Andrea Bizzotto

Hi, I'm Andrea Bizzotto!

Andrea, a Zero To Mastery Academy instructor, is a Senior Developer & Google GDE with 10+ years of programming experience. Andrea is passionate about open-source, teaching and all things Flutter.

SEE MY BIO & COURSES

Andrea Bizzotto

Senior Developer & Flutter GDE

Frequently asked questions

Are there any prerequisites for this Dart course?

  • A computer (Windows, Mac, or Linux) with an internet connection
  • Enough free space to install Visual Studio Code and the Dart SDK
  • A willingness and enthusiasm to learn

Who is this course for

  • Anyone who wants to learn and master Dart, no matter your background or level of experience
  • Students who are interested in going beyond all of the other "beginner" Dart tutorials
  • Programmers who want to learn one of the fastest growing languages
  • Flutter Developers that want to build a stronger foundation and learn Dart in-depth to be able to create more complex Flutter apps
  • Bootcamp or online tutorial graduates that want to go beyond the basics
  • You want to learn from a Senior Developer who is active in the Dart / Flutter community, is a Google Developer Expert (GDE) and has 20+ years of real-world industry experience building large-scale apps

Do you provide a certificate of completion?

We definitely do and they are quite nice. You will also be able to add Zero To Mastery Academy to the education section of your LinkedIn profile as well.

Can I use the course projects in my portfolio?

Yes, you’d be crazy not to in our slightly biased opinion! All projects are downloadable and ready to use the minute you join.

Many of our students tell us the projects they built while following along with our courses were what got them interviews and because they built the projects themselves, they could confidently explain and walk through their work during the interview.

You know what that means? Job offer!

Can I download the videos?

Definitely. You can download any and all lessons for personal use. We do everything we can to make learning easy, fun and accessible. Whether that’s on your commute, on a flight or just when you have limited access to good WiFi.

Still have more questions about the Academy?

Still have more questions specific to the Academy membership? No problem, we answer some more here.

Take the next step and invest in a better you

Choose your currency:
$ USD US Dollar
Monthly
100% OFF$39 / month
$39 / month
You're ready to upskill and advance your career
Start Learning Now
Save 40% vs. monthly (that's $189 a year)
Annual
100% OFF$279 / year
$279 / year
$23 / month
You're committed to getting hired and starting a career in tech
Start Learning Now
Lifetime
100% OFF$999
$999
Only pay once, ever
You're serious about advancing your career and never getting left behind
Start Learning Now

Every ZTM membership includes:

Unlimited access to all courses, workshops, and career paths
Invite to private Discord with 400,000+ members
Access to private Linkedin networking group
Custom ZTM course completion certificates
Download all lessons for offline learning
Unlimited, priority access to all future courses, content, and features
100% RISK FREE

We know you'll love ZTM. That's why we provide a no hassle, 30-day money back guarantee.