The Complete Dart Developer Guide
Learn Dart Programming in depth. Includes: basic to advanced topics, exercises, and projects. Fully updated to Dart 2.15
Course Curriculum (10h)
- 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)
- Conversions 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)
- 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 user input with stdin from dart:io (4:03)
- Implementing the game loop (2:43)
- Implementing the game logic (8:55)
- 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)
- 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)
- 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 notation (1:29)
- The global and local scope (2:22)
- Inner Functions (2:00)
- Global mutable state and functions with side effects (4:05)
- 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)
- Exercise: Implement the firstWhere function (3:35)
- The reduce method (2:46)
- Combining functional operators (6:01)
- 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)
- 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 copyWith (3:57)
- The cascade operator (4:15)
- 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 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)
Course Description
Welcome to this full and complete course on the Dart language.
Dart is the 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.
Course overview
Covering all the fundamental concepts for Dart development, this is the most comprehensive and updated Dart course available online.
As a Google Developer Expert for Dart and Flutter, I'll teach you everything you need to know about Dart, even if you've never written a single line of code before.
This is a beginners course, but it goes well beyond the basics and teach you many advanced topics with clear diagrams and explanations.
Why is this important?
To make Flutter apps, you’ll use the Dart language every single day. If you want to go beyond simple apps, you must know and understand it well.
This course will prepare you for this, by covering the more advanced Dart features that are needed to build complex Flutter apps.
This Dart course also includes many exercises and practical projects. These will help you consolidate your knowledge as you make progress.
Included in this course
The course follows a carefully designed structure, and guides you through all these topics:
I will teach you the language features using Dartpad - a free online editor for writing Dart code.
Beyond that, you will also learn how to write command line applications in Dart, using Visual Studio Code.
As part of this, you will complete some real-world projects, and be prepared for the next steps in your programming journey.
Course Structure
I designed this course to be a step-by-step guide, as well as a reference that you can use to explore specific topics in depth.
If you're new to Dart and programming in general, this is a great place to start and you can 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. This 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
By buying this course you'll have access to 10 hours of content as well as many exercises, and any bonus materials that I will include in the future.
Premium Support Included
You can ask questions if you get stuck. I'll do my best to answer all questions within 24 hours - but please keep them relevant to the course material.
Enroll Today
This is a great package, and by the end of this course:
- you'll be comfortable with all aspects of the Dart Language.
- you'll have a strong foundation that you can use as you continue your programming journey and learn about Flutter and beyond.
I'm very excited to share this course with you, so enroll now to get started.
Frequently Asked Questions
Who is this course for?
This is a beginners course and you can take it even if Dart is your first programming language. The course will take you from the basics, all the way to more advanced topics such as Object Oriented Programming and Async Programming with Futures and Streams.
How long is the course?
The course includes 10 hours of video content.
Is the course updated?
Yes. This course was last updated in December 2021 and all the lessons are compatible with Flutter 2.8 and Dart 2.15 and above.
What if I get stuck? Can I ask questions?
Yes. Make sure to join the Slack channel where you can ask questions and get help from myself and other members. I aim to answer all course-related questions within 24 hours.
Are there exercises?
Sure thing! Each chapter includes exercises and solutions. The course also contains some practical projects, so you can practice what you have learned.
Is the source code included?
Yes, full source code is available on GitHub for all the exercises, solutions and practical projects in the course.
Will I get a certificate?
Sure, once you complete the course you'll get a completion certificate.
What is my teaching style?
My courses are very practical, clear, and concise - just like all the tutorials on my YouTube channel. I always explain what we're going to build and why, and then how. You'll leave this course with a deeper understanding of how things work and will be able to apply this knowledge to your own apps.
Can I get a student discount?
I'm happy to offer a 40% discount to students. Send me an email at [email protected] showing that you are a student, and I'll give you a discount code.
This course is not valuable for me and I want a refund.
You can get 100% money back guarantee within 30 days. No questions asked. I only want happy students and I'm happy to give a full refund.
Hi, I'm Andrea.
I have extensive experience in mobile app development, having built complex apps for various clients and as an independent developer.
I'm passionate about teaching. I launched Code With Andrea and a YouTube channel to create high quality Flutter tutorials.
My courses are clear, concise, and based on real-world examples. Just like my code. Watch my videos for a first-hand experience.
They include a lot of practical advice and tips that will make you more productive, and a better software developer.
Life is short. Your time matters. I want to help you make the most of it, and enjoy your journey.