Don't want to get left behind? Learn to build with A.I. now 🤖
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.

30 Days

Average time students take to complete this course.

instructor
Taught by: Andrea Bizzotto
Last updated: April 2024

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 2024!

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.

Join Zero To Mastery Now

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.

Join Zero To Mastery 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

BEGIN

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

BEGIN

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

BEGIN

Exercise: String interpolation1:46

BEGIN

String Escaping4:00

BEGIN

Multi-line strings1:34

BEGIN

Basic String operations: uppercase and lowercase3:33

BEGIN

Initialization vs Assignment1:55

BEGIN

Exercise: Lowercase and uppercase strings0:58

BEGIN

Finding and replacing strings4:24

BEGIN

Conversations between types4:29

BEGIN

Arithmetic operators3:31

BEGIN

Exercise: temperature conversion2:25

BEGIN

Increment & decrement operators3:16

BEGIN

Logical & Relational operators3:34

BEGIN

Ternary conditional operator2:24

BEGIN

Hex format, bitwise & shifting operators4:17

BEGIN

Comments4:12

BEGIN

Expressions & statements1:55

BEGIN

Unlimited Updates

BEGIN

Dart type system

7 lectures

Section Intro0:49

BEGIN

Static vs Dynamic Languages3:41

BEGIN

Type inference with 'var'1:11

BEGIN

The 'final' keyword2:26

BEGIN

The 'const' keyword2:20

BEGIN

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

BEGIN

The 'dynamic' keyword2:17

BEGIN

Control flow

10 lectures

Section Intro0:37

BEGIN

If/else statements3:31

BEGIN

Exercise: if/else statements2:43

BEGIN

while loops2:55

BEGIN

for loops2:48

BEGIN

Exercise: fizz buzz3:20

BEGIN

'break' and 'continue'3:50

BEGIN

switch statements3:37

BEGIN

enumerations9:29

BEGIN

Exercise: simple calculator2:36

BEGIN

Project: Building a command line app

9 lectures

Section Intro1:48

BEGIN

Installing the Dart SDK6:54

BEGIN

Installing and configuring VS Code4:06

BEGIN

Project Brief: Rock, Paper & Scissors2:10

BEGIN

Creating a command line app1:59

BEGIN

Pseudocode for the game logic1:50

BEGIN

Getting use input with stdin from dart:io4:03

BEGIN

Implementing the game loop2:43

BEGIN

Implementing the game logic17:50

BEGIN

Collections

21 lectures

Section Intro0:48

BEGIN

Lists4:01

BEGIN

Exercise: Sum of the items in a list1:02

BEGIN

List methods3:36

BEGIN

Type annotations with lists1:53

BEGIN

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

BEGIN

Sets3:47

BEGIN

Exercise: Sets2:09

BEGIN

Maps4:56

BEGIN

The 'as' operator1:32

BEGIN

The 'null' value1:24

BEGIN

Iterating on maps2:56

BEGIN

Exercise: Pizza Ordering2:26

BEGIN

Nested Collections1:40

BEGIN

Exercise: Restaurant ratings1:48

BEGIN

Collection-if2:48

BEGIN

Collection-for1:33

BEGIN

Spreads3:04

BEGIN

Exercise: Shopping List2:13

BEGIN

Copying collections4:54

BEGIN

Exercise: Imposter Syndrome2:55

BEGIN

Project: Data Processing in Dart

5 lectures

Section Intro2:29

BEGIN

Parsing command line arguments3:22

BEGIN

Reading files line by line3:31

BEGIN

Pseudocode for the processing logic2:25

BEGIN

Implementing the processing logic6:13

BEGIN

Dart Null Safety

8 lectures

Introduction to Null Safety2:27

BEGIN

Nullable and non-nullable variables2:56

BEGIN

Flow Analysis: Promotion and Definite Assignment3:28

BEGIN

The assertion operator2:08

BEGIN

The if-null operator2:28

BEGIN

Null Safety with type inference1:25

BEGIN

Null Safety with collections2:23

BEGIN

The conditional access operator & the billion dollar mistake3:17

BEGIN

Functions: Basics

13 lectures

Section Intro0:58

BEGIN

Intro to functions1:30

BEGIN

Function arguments4:30

BEGIN

Return values1:59

BEGIN

Exercise: Sum of a list of numbers2:25

BEGIN

Named and positional arguments2:35

BEGIN

Required and default values5:02

BEGIN

Default positional arguments2:16

BEGIN

Exercise: Pizza ordering with functions2:36

BEGIN

Fat arrow notations1:29

BEGIN

The global and local scope2:22

BEGIN

Inner Functions2:00

BEGIN

Global mutable state and functions with side effects4:05

BEGIN

Functions: Advanced

14 lectures

Section Intro0:43

BEGIN

Anonymous functions2:51

BEGIN

Functions as first class objects2:45

BEGIN

Function types3:37

BEGIN

Closures2:10

BEGIN

The 'forEach' method3:44

BEGIN

The 'map' method1:36

BEGIN

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

BEGIN

Code reuse with anonymous functions and generics7:49

BEGIN

The 'where' and 'firstWhere' methods3:10

BEGIN

Exercise: Implement the 'where' function2:43

BEGIN

Ecercise: Implement the 'firstWhere' function3:35

BEGIN

The 'reduce' method2:46

BEGIN

Combining functional operators6:01

BEGIN

Classes: Basics

16 lectures

Section Intro0:42

BEGIN

Introduction to classes3:52

BEGIN

Instance methods3:32

BEGIN

Class constructors and the 'this' keyword1:59

BEGIN

Initializer lists and the shorthand syntax4:46

BEGIN

Classes with immutable members1:51

BEGIN

Exercise: Creating a 'Person' class2:58

BEGIN

Type safety with classes2:01

BEGIN

'const' constructors2:35

BEGIN

Named constructors3:49

BEGIN

Named constructors: temperature example2:51

BEGIN

Getters and setters3:05

BEGIN

Exercise: Restaurant ratings with classes2:58

BEGIN

Static methods and variables3:14

BEGIN

Private variables and methods5:28

BEGIN

Wrap up1:13

BEGIN

Classes: Advanced

19 lectures

Section Intro1:24

BEGIN

VS Code Dart Setup with Null Safety7:30

BEGIN

Introduction to inheritance/subclassing4:17

BEGIN

The 'super' constructor3:43

BEGIN

Overriding methods3:07

BEGIN

Abstract classes6:30

BEGIN

Exercise: Area and Perimeter2:36

BEGIN

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

BEGIN

The base 'Object' class2:00

BEGIN

The 'toString()' method2:51

BEGIN

The equality operator and the 'covariant' keyword4:22

BEGIN

Exercise: Implement the + and * operators1:49

BEGIN

Overriding 'hashCode' and the Equatable package5:43

BEGIN

Using classes with generics3:16

BEGIN

Composition vs inheritance: Flutter widget hierarchy example3:49

BEGIN

Factory constructors and reading JSON data10:21

BEGIN

Exercise: JSON Serialization3:03

BEGIN

Copying objects with 'copyWiith'3:57

BEGIN

The cascade operator4:15

BEGIN

Project: Simple eCommerce

6 lectures

Simple eCommerce store: Overview3:04

BEGIN

Creating the Product, Item, Cart classes2:27

BEGIN

Adding the interactive prompt7:07

BEGIN

Adding items to the cart5:53

BEGIN

Checkout functionality4:23

BEGIN

Project structure and wrap-up3:29

BEGIN

Mixins & Extensions

6 lectures

Section Intro1:27

BEGIN

Creating and using mixins4:42

BEGIN

Mixins: Drawbacks2:35

BEGIN

Extensions2:59

BEGIN

Extensions with generic type constraints4:10

BEGIN

Exercise: Range extension2:20

BEGIN

Error Handling & Exceptions

5 lectures

Section Intro1:15

BEGIN

Errors vs Exceptions1:35

BEGIN

Assertions5:29

BEGIN

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

BEGIN

Exercise: Email validation3:23

BEGIN

Async Programming

11 lectures

Section Intro1:44

BEGIN

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

BEGIN

'async' and 'await'4:12

BEGIN

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

BEGIN

Exercise: Countdown with Futures3:10

BEGIN

Streams4:44

BEGIN

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

BEGIN

Exercise: fizz-buzz with streams2:15

BEGIN

Stream constructors2:06

BEGIN

Stream methods3:40

BEGIN

Single/multiple subscription streams1:45

BEGIN

Weather App

8 lectures

Weather App Overview1:49

BEGIN

REST API Basics2:35

BEGIN

Creating the command-line app1:32

BEGIN

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

BEGIN

Reading the response status code and data3:50

BEGIN

Completing the Weather API Client4:14

BEGIN

Parsing JSON Data6:37

BEGIN

Error Handling and Wrap up7:30

BEGIN

Conclusion & Next Steps

5 lectures

Thank You!1:17

BEGIN

Review This Course!

BEGIN

Become An Alumni

BEGIN

LinkedIn Endorsements

BEGIN

Learning Guideline

BEGIN

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!

Are there subtitles?

Yes! We have high quality subtitles in 11 different languages: English, Spanish, French, German, Dutch, Romanian, Arabic, Hindi, Portuguese, Indonesian, and Japanese.

You can even adjust the text size, color, background and more so that the subtitles are perfect just for you!

Still have more questions about the Academy?

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

Invest in a better you. For less than a coffee a day.

Choose your currency:
$ USD US Dollar
Lifetime
100% OFF$999
$999
Only pay once, ever
You're serious about advancing your career and never getting left behind
Start Learning Now

MOST POPULAR

Save 40% vs. monthly (that's $189 a year)
Annual
100% OFF$279 / year
$23 / month
$279 / year
You're committed to getting hired and starting a career in tech
Start Learning Now
Monthly
100% OFF$39 / month
$39 / month
You're ready to upskill and advance your career
Start Learning Now

Every ZTM membership includes:

Unlimited access to all courses, projects + workshops, and career paths
Access to our private Discord with 400,000+ members
Access to our private LinkedIn networking group
Custom ZTM course completion certificates
Live career advice sessions with mentors, every month
Full 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.