CodeBlanks Logo Icon CodeBlanks
Free 4 levels

Dart

Learn Dart 3 from null safety, records, pattern matching and async to expert level with hands-on projects.

The Dart course covers all levels with null safety, OOP, generics, async/await, Streams, isolates, FFI and language design.

  • 362 lessons
  • 30 h 26 min
  • 10 projects

No account needed, you can start right away. To save your progress, create a free account

Levels

The Dart course goes from zero to expert in four levels. Start at any level you like.
Not sure of your level? Take the placement test
Beginner

Learn Dart 3 fundamentals: variables, data types, loops, collections, functions and null safety.

  • Dart basics
  • Variables
  • Data types
  • Operators
116 lessons · 9 h 27 min See lessons →
Intermediate

Learn OOP, inheritance, mixins, generics, async/await and Streams in Dart.

  • Classes in depth
  • Inheritance
  • Encapsulation
  • Mixins
116 lessons · 9 h 59 min See lessons →
Advanced

Learn isolates, concurrency, metaprogramming, testing and Dart Server (shelf) in Dart.

  • Isolates
  • Concurrency
  • Advanced streams
  • Metaprogramming
83 lessons · 7 h 0 min See lessons →
Expert

Learn language design, compiler internals, FFI, native extensions and large-scale architecture in Dart.

  • Language design
  • Compiler internals
  • FFI
  • Native extension
47 lessons · 4 h 0 min See lessons →

Projects you will build

At every level you combine what you learned into a real page.

How does it work?

Short explanation

Each lesson explains one concept in a few short cards; no long videos or walls of text.

Try it right away

Multiple choice, fill-in-the-blank and matching exercises lock in what you just learned.

Write it yourself

You write real code in the in-browser editor; it is checked instantly and you see the result live.

Curriculum

62 groups · 362 lessons · 30 h 26 min

Learn Dart 3 fundamentals: variables, data types, loops, collections, functions and null safety.

1
Dart basics
6 lessons · 24 min
  1. 1 What is Dart? Learn that Dart is a language developed by Google. 4 min
  2. 2 Your first program Learn to write your first Dart program with main and print. 4 min
  3. 3 dart run Learn to run programs with dart run. 4 min
  4. 4 Comments Learn to write // and /* */ comments in Dart. 3 min
  5. 5 String interpolation Learn to embed variables in strings with \$. 4 min
  6. 6 Summary - Dart basics Combine main, print and comments to write your first Dart program. 5 min
2
Variables
6 lessons · 27 min
  1. 1 var and type Learn to declare variables with var and explicit types. 4 min
  2. 2 final Learn to declare immutable variables with final. 4 min
  3. 3 const Learn to define compile-time constants with const. 4 min
  4. 4 late Learn deferred initialization with late. 5 min
  5. 5 Null safety Learn null and nullable types (?) in Dart. 5 min
  6. 6 Summary - Variables Combine var, final, const and null safety to write a profile program. 5 min
3
Data types
6 lessons · 26 min
  1. 1 Integer types Learn int and num types. 4 min
  2. 2 Floating-point types Learn double and floating-point numbers. 4 min
  3. 3 bool and String Learn bool and String types. 3 min
  4. 4 Type inference Learn var and type inference. 5 min
  5. 5 dynamic Learn the dynamic type and runtime type checking. 5 min
  6. 6 Summary - Data types Combine int, double, String and bool to write a calculation card. 5 min
4
Project: CalculatorProject
5 lessons · 30 min
  1. 1 Project design Design the structure of the calculator project and write the skeleton code. 6 min
  2. 2 Add and subtract Add and test the addition and subtraction functions. 6 min
  3. 3 Multiply and divide Add multiplication, division and the divide-by-zero check. 6 min
  4. 4 Error handling Safely catch invalid inputs with try/catch. 6 min
  5. 5 Putting it together Combine all parts into a working calculator. 6 min
5
Operators
6 lessons · 26 min
  1. 1 Arithmetic operators Learn arithmetic with +, -, *, /, % and ~/. 4 min
  2. 2 Assignment operators Learn shortcut assignments with =, +=, -= and ++/--. 4 min
  3. 3 Comparison operators Learn to compare values with ==, !=, <, >, <= and >=. 4 min
  4. 4 Logical operators Learn boolean logic with &&, || and !. 4 min
  5. 5 Null-aware operators Learn ??, ?. and ??= operators. 5 min
  6. 6 Summary - Operators Combine arithmetic, null-aware and logical operators to build a grade calculator. 5 min
6
Strings
6 lessons · 28 min
  1. 1 Creating strings Learn to create Strings with single and double quotes. 4 min
  2. 2 String interpolation Learn to embed values in strings with \$ and \${}. 5 min
  3. 3 length and methods Learn .length and String methods. 4 min
  4. 4 substring Learn to take parts of a string with substring. 5 min
  5. 5 contains and indexOf Learn search with contains and indexOf. 5 min
  6. 6 Summary - Strings Combine interpolation, length and contains to write a business card. 5 min
7
Conditionals
6 lessons · 27 min
  1. 1 The if statement Learn how to check a condition with if. 4 min
  2. 2 else and else if Learn else and else if chains for alternative cases. 4 min
  3. 3 switch Learn multi-way selection with switch, case, break and default. 5 min
  4. 4 Pattern matching Learn Dart 3 switch expressions and pattern matching. 5 min
  5. 5 Ternary Learn to write a conditional expression in one line with ? :. 4 min
  6. 6 Summary - Conditionals Combine if, switch and pattern matching to write a day-of-week app. 5 min
8
Loops
6 lessons · 26 min
  1. 1 The for loop Learn to write counted loops with for. 4 min
  2. 2 The while loop Learn loops that run while a condition holds with while. 4 min
  3. 3 The do-while loop Learn loops that run at least once with do-while. 4 min
  4. 4 for-in Learn to iterate over iterables with for-in. 5 min
  5. 5 break and continue Learn to exit a loop with break and skip with continue. 4 min
  6. 6 Summary - Loops Combine for, while and for-in to write a multiplication table. 5 min
9
Project: Shopping cartProject
5 lessons · 30 min
  1. 1 Cart design Design the class structure for the shopping cart. 6 min
  2. 2 Adding items Learn to add items with the addItem method. 6 min
  3. 3 Calculating totals Learn to compute the subtotal and the tax-inclusive total. 6 min
  4. 4 Listing the cart Write the method that prints the cart formatted. 6 min
  5. 5 Putting it together Combine the cart class with a menu loop. 6 min
10
Lists
6 lessons · 28 min
  1. 1 Creating lists Learn to create Lists with []. 4 min
  2. 2 List access Learn to access list elements by index. 4 min
  3. 3 add and remove Learn list management with .add and .remove. 5 min
  4. 4 length and contains Learn list info with .length and .contains. 5 min
  5. 5 List methods Learn list processing with map, where and fold. 5 min
  6. 6 Summary - Lists Combine add, map and where to write a class list. 5 min
11
Sets and Maps
6 lessons · 30 min
  1. 1 Set Learn unique collections with Set. 5 min
  2. 2 Set operations Learn Set management with add, contains and remove. 5 min
  3. 3 Map Learn key-value collections with Map. 5 min
  4. 4 Map operations Learn Map management with [] and .putIfAbsent. 5 min
  5. 5 Map iteration Learn to iterate over Maps with for-in and forEach. 5 min
  6. 6 Summary - Sets and Maps Combine Set and Map to write a phone book. 5 min
12
Functions
6 lessons · 28 min
  1. 1 Defining functions Learn how to define and call a function. 4 min
  2. 2 Return values Learn to return a value from a function with return. 4 min
  3. 3 Arrow functions Learn to write short functions with =>. 5 min
  4. 4 Optional parameters Learn optional and named parameters. 5 min
  5. 5 First-class functions Learn to pass functions as values. 5 min
  6. 6 Summary - Functions Combine arrow, named and first-class to write a math helper. 5 min
13
Null safety in depth
6 lessons · 30 min
  1. 1 Nullable types Learn String? and nullable types. 5 min
  2. 2 Null-aware operators Learn ??, ?. and ??= operators. 5 min
  3. 3 The ! operator Learn null assertion with !. 5 min
  4. 4 late Learn deferred initialization with late. 5 min
  5. 5 Null check Learn null checking with if (x != null). 5 min
  6. 6 Summary - Null safety Combine ?, ??, ! and late to write a null-safe function. 5 min
14
Class basics
6 lessons · 30 min
  1. 1 class Learn to define classes with class. 5 min
  2. 2 Constructor Learn to define the class constructor. 5 min
  3. 3 Instance variables Learn to declare instance variables in a class. 5 min
  4. 4 Methods Learn to define methods in a class. 5 min
  5. 5 this Learn to access the class itself with this. 5 min
  6. 6 Summary - Class basics Combine class, constructor and methods to write a User class. 5 min
15
Project: To-do CLIProject
5 lessons · 30 min
  1. 1 Task model Design the Task class and list structure. 6 min
  2. 2 Adding tasks Learn to add tasks with the addTask method. 6 min
  3. 3 Listing tasks Learn to print tasks formatted with listTasks. 6 min
  4. 4 Completing tasks Learn to update task status with completeTask. 6 min
  5. 5 Putting it together Build a working CLI app with a menu loop. 6 min
16
Advanced string operations
6 lessons · 30 min
  1. 1 split and join Learn string splitting with split and join. 5 min
  2. 2 replace Learn string modification with replaceAll. 5 min
  3. 3 trim and pad Learn formatting with trim, padLeft and padRight. 5 min
  4. 4 RegExp Learn regular expressions with RegExp. 5 min
  5. 5 StringBuffer Learn efficient string concatenation with StringBuffer. 5 min
  6. 6 Summary - Advanced strings Combine split, RegExp and StringBuffer to write a CSV parser. 5 min
17
Enums
6 lessons · 28 min
  1. 1 Defining enums Learn to define named constants with enum. 4 min
  2. 2 Enum values Learn to access enum members. 4 min
  3. 3 Enhanced enums Learn Dart 3 enhanced enums. 5 min
  4. 4 switch with enum Learn branching on enums with switch. 5 min
  5. 5 Enum and patterns Learn enums with pattern matching. 5 min
  6. 6 Summary - Enums Combine enum and enhanced enum to write a state machine. 5 min
18
Exceptions
6 lessons · 29 min
  1. 1 try/catch Learn to catch errors with try/catch. 5 min
  2. 2 throw Learn to throw exceptions with throw. 4 min
  3. 3 finally Learn the cleanup block with finally. 5 min
  4. 4 The Exception class Learn the Exception class and custom exceptions. 5 min
  5. 5 on clause Learn to catch specific exception types with on. 5 min
  6. 6 Summary - Exceptions Combine try/catch, finally and a custom exception to write a bank account class. 5 min
19
Async basics
6 lessons · 30 min
  1. 1 Future Learn asynchronous operations with Future. 5 min
  2. 2 async/await Learn async code with async and await. 5 min
  3. 3 then Learn Future chaining with .then. 5 min
  4. 4 Future.error Learn Future.error and catchError. 5 min
  5. 5 Future.wait Learn parallel Futures with Future.wait. 5 min
  6. 6 Summary - Async basics Combine async/await and Future.wait to write a parallel downloader. 5 min
20
Beginner finalProject
5 lessons · 30 min
  1. 1 Project design Design the skeleton of the beginner final mini app. 6 min
  2. 2 Classes Set up the data model with class and constructor. 6 min
  3. 3 Collections Write data management with List and Map. 6 min
  4. 4 Error handling Add error handling with try/catch. 6 min
  5. 5 Putting it together Combine all parts into a working final app. 6 min

Learn OOP, inheritance, mixins, generics, async/await and Streams in Dart.

1
Classes in depth
6 lessons · 30 min
  1. 1 Constructor types Learn named and default constructors. 5 min
  2. 2 Named constructors Learn multiple constructors with named constructors. 5 min
  3. 3 Initializer list Learn field initialization with the initializer list. 5 min
  4. 4 const constructor Learn compile-time objects with const constructors. 5 min
  5. 5 factory Learn flexible creation with factory constructors. 5 min
  6. 6 Summary - Classes Combine named, const and factory constructors to write a Point class. 5 min
2
Inheritance
6 lessons · 30 min
  1. 1 extends Learn to inherit from a base class with extends. 5 min
  2. 2 super Learn to call the base class constructor with super. 5 min
  3. 3 Override Learn to redefine methods with @override. 5 min
  4. 4 abstract Learn abstract classes with abstract. 5 min
  5. 5 interface Learn to implement interfaces with implements. 5 min
  6. 6 Summary - Inheritance Combine extends, super and override to write a shape hierarchy. 5 min
3
Project: Helper libraryProject
5 lessons · 30 min
  1. 1 Module design Design the skeleton of the helper library class. 6 min
  2. 2 String helpers Add and test string processing methods. 6 min
  3. 3 Number helpers Add number conversion and calculation methods. 6 min
  4. 4 Date helpers Add DateTime processing methods. 6 min
  5. 5 Putting it together Combine helper methods into a library. 6 min
4
Encapsulation
6 lessons · 30 min
  1. 1 private Learn private members with _. 5 min
  2. 2 Getters and setters Learn controlled access with get and set. 5 min
  3. 3 final and const fields Learn immutability with final and const fields. 5 min
  4. 4 late Learn deferred initialization with late. 5 min
  5. 5 static Learn class-level members with static. 5 min
  6. 6 Summary - Encapsulation Combine private, getter/setter and static to write an Account class. 5 min
5
Mixins
6 lessons · 30 min
  1. 1 mixin Learn reusable code with mixin. 5 min
  2. 2 Using mixins Learn to apply mixins with with. 5 min
  3. 3 mixin constraints Learn mixin constraints with on. 5 min
  4. 4 Multiple mixins Learn to apply multiple mixins. 5 min
  5. 5 mixin vs inheritance Learn the difference between mixin and inheritance. 5 min
  6. 6 Summary - Mixins Combine mixin, with and on to write a capability system. 5 min
6
Generics
6 lessons · 30 min
  1. 1 Generic class Learn generic classes with <T>. 5 min
  2. 2 Generic methods Learn to define generic methods. 5 min
  3. 3 Type constraints Learn type constraints with extends. 5 min
  4. 4 Generic collections Learn List<T> and Map<K,V> generic collections. 5 min
  5. 5 Generics vs dynamic Learn the difference between generics and dynamic. 5 min
  6. 6 Summary - Generics Combine generic class, methods and collections to write a Stack<T>. 5 min
7
Project: Quiz appProject
5 lessons · 30 min
  1. 1 Quiz model Design the skeleton of Question and Quiz classes. 6 min
  2. 2 Adding questions Learn to add questions with the addQuestion method. 6 min
  3. 3 Running the quiz Learn to ask questions in turn with the run method. 6 min
  4. 4 Score calculation Learn correct count with the score calculation method. 6 min
  5. 5 Putting it together Combine the Quiz class with a menu loop. 6 min
8
Collections
6 lessons · 30 min
  1. 1 List Learn dynamic arrays with List<T>. 5 min
  2. 2 Set Learn unique collections with Set<T>. 5 min
  3. 3 Map Learn key-value collections with Map<K,V>. 5 min
  4. 4 Queue Learn FIFO collections with Queue<T>. 5 min
  5. 5 Iterable Learn iterable collections with Iterable. 5 min
  6. 6 Summary - Collections Combine List, Set and Map to write a phone book. 5 min
9
Collection methods
6 lessons · 30 min
  1. 1 map Learn transformation with .map. 5 min
  2. 2 where Learn filtering with .where. 5 min
  3. 3 fold and reduce Learn aggregation with fold and reduce. 5 min
  4. 4 forEach Learn side-effect loops with forEach. 5 min
  5. 5 any and every Learn condition checks with any and every. 5 min
  6. 6 Summary - Collection methods Combine map, where and fold to write a sales report. 5 min
10
Project: Library appProject
5 lessons · 30 min
  1. 1 Model design Design the skeleton of Book and Member classes. 6 min
  2. 2 Library class Set up collection management with the Library class. 6 min
  3. 3 Checking out Write the checkout flow with checkout and return methods. 6 min
  4. 4 Search and filter Write search and filtering with collection methods. 6 min
  5. 5 Putting it together Combine the Library class with a menu loop. 6 min
11
Async in depth
6 lessons · 30 min
  1. 1 Future Learn asynchronous operations with Future. 5 min
  2. 2 async/await Learn async code with async and await. 5 min
  3. 3 Future chaining Learn Future chaining with .then and .catchError. 5 min
  4. 4 Future.wait Learn parallel Futures with Future.wait. 5 min
  5. 5 Completer Learn manual Future control with Completer. 5 min
  6. 6 Summary - Async Combine async/await, Future.wait and Completer to write a parallel downloader. 5 min
12
Streams
6 lessons · 30 min
  1. 1 What are streams? Learn the stream concept and event sequences. 5 min
  2. 2 Listening to streams Learn to listen to streams with listen. 5 min
  3. 3 Stream transformation Learn stream transformation with map and where. 5 min
  4. 4 asyncExpand Learn stream chaining with asyncExpand. 5 min
  5. 5 StreamController Learn to create streams with StreamController. 5 min
  6. 6 Summary - Streams Combine listen, map and StreamController to write an event logger. 5 min
13
Type aliases
6 lessons · 30 min
  1. 1 typedef Learn function types with typedef. 5 min
  2. 2 Type alias Learn Dart 3 type aliases. 5 min
  3. 3 Record Learn tuples with Dart 3 Records. 5 min
  4. 4 Pattern matching Learn Dart 3 pattern matching and destructuring. 5 min
  5. 5 switch expression Learn expressions with switch expressions. 5 min
  6. 6 Summary - Type aliases Combine typedef, Record and pattern matching to write a DTO system. 5 min
14
Metadata and annotations
6 lessons · 30 min
  1. 1 Metadata Learn metadata with @annotation. 5 min
  2. 2 Custom annotations Learn to write your own annotation class. 5 min
  3. 3 @override Learn the @override annotation. 5 min
  4. 4 @deprecated Learn the @deprecated annotation. 5 min
  5. 5 Reflection Learn reflection with dart:mirrors. 5 min
  6. 6 Summary - Metadata Combine annotations, @override and reflection to write an annotation processor. 5 min
15
Testing
6 lessons · 30 min
  1. 1 dart test Learn the dart test framework. 5 min
  2. 2 test and expect Learn assertions with test and expect. 5 min
  3. 3 group Learn test organization with group. 5 min
  4. 4 setUp and tearDown Learn fixtures with setUp and tearDown. 5 min
  5. 5 Mock Learn mocking with mockito. 5 min
  6. 6 Summary - Testing Combine test, expect and mock to write a calculator test. 5 min
16
File I/O
6 lessons · 30 min
  1. 1 dart:io Learn file operations with dart:io. 5 min
  2. 2 File.readAsString Learn to read files with File.readAsString. 5 min
  3. 3 File.writeAsString Learn to write files with File.writeAsString. 5 min
  4. 4 exists Learn to check file existence with File.exists. 5 min
  5. 5 Directory Learn folder operations with Directory. 5 min
  6. 6 Summary - File I/O Combine readAsString, writeAsString and exists to write a notes app. 5 min
17
Packages
6 lessons · 30 min
  1. 1 pub Learn the pub package manager. 5 min
  2. 2 pubspec.yaml Learn the pubspec.yaml configuration. 5 min
  3. 3 pub get Learn to install packages with pub get. 5 min
  4. 4 import Learn to import packages with import. 5 min
  5. 5 pub publish Learn to publish packages with pub publish. 5 min
  6. 6 Summary - Packages Combine pubspec, pub get and import to set up a package structure. 5 min
18
Advanced error handling
6 lessons · 30 min
  1. 1 Exception hierarchy Learn the exception hierarchy and custom exceptions. 5 min
  2. 2 Error vs Exception Learn the difference between Error and Exception. 5 min
  3. 3 Stack trace Learn stack trace and debugging. 5 min
  4. 4 Result pattern Learn functional error handling with the Result pattern. 5 min
  5. 5 Async errors Learn async errors and try/catch. 5 min
  6. 6 Summary - Advanced error handling Combine hierarchy, Result and async errors to write a robust service. 5 min
19
Documentation
6 lessons · 29 min
  1. 1 dartdoc Learn documentation generation with dartdoc. 4 min
  2. 2 Doc comments Learn documentation comments with ///. 5 min
  3. 3 Markdown Learn documentation formatting with Markdown. 5 min
  4. 4 @param and @return Learn @param and @return tags. 5 min
  5. 5 Example code Learn example code in documentation. 5 min
  6. 6 Summary - Documentation Combine dartdoc, /// and Markdown to write a documented library. 5 min
20
Intermediate finalProject
5 lessons · 30 min
  1. 1 Project design Design the skeleton of the intermediate final mini app. 6 min
  2. 2 OOP model Set up the class hierarchy and interfaces. 6 min
  3. 3 Collections Write data filtering with List, Map and Stream. 6 min
  4. 4 File I/O Save and load data with dart:io. 6 min
  5. 5 Putting it together Combine all layers into a working app. 6 min

Learn isolates, concurrency, metaprogramming, testing and Dart Server (shelf) in Dart.

1
Isolates
6 lessons · 30 min
  1. 1 What are isolates? Learn the Dart concurrency model with isolates. 5 min
  2. 2 Isolate.spawn Learn new isolates with Isolate.spawn. 5 min
  3. 3 SendPort Learn communication with SendPort and ReceivePort. 5 min
  4. 4 compute Learn simple isolates with compute. 5 min
  5. 5 Isolate vs thread Learn the difference between isolates and threads. 5 min
  6. 6 Summary - Isolates Combine spawn, SendPort and compute to write a parallel computation. 5 min
2
Concurrency
6 lessons · 30 min
  1. 1 Event loop Learn the Dart event loop model. 5 min
  2. 2 Microtasks Learn the microtask and macrotask queues. 5 min
  3. 3 Future scheduler Learn the relation between Future and the scheduler. 5 min
  4. 4 scheduleMicrotask Learn microtasks with scheduleMicrotask. 5 min
  5. 5 Zone Learn context management with Zone. 5 min
  6. 6 Summary - Concurrency Combine event loop, microtasks and Zone to write a scheduler. 5 min
3
Advanced streams
6 lessons · 30 min
  1. 1 Broadcast streams Learn multiple listeners with broadcast streams. 5 min
  2. 2 Stream transformer Learn transformation with StreamTransformer. 5 min
  3. 3 debounce and throttle Learn debounce and throttle. 5 min
  4. 4 Stream errors Learn stream errors and onError. 5 min
  5. 5 asyncExpand Learn stream chaining with asyncExpand. 5 min
  6. 6 Summary - Advanced streams Combine broadcast, transformer and debounce to write an event processor. 5 min
4
Metaprogramming
6 lessons · 30 min
  1. 1 Reflection Learn reflection with dart:mirrors. 5 min
  2. 2 Mirror Learn InstanceMirror and ClassMirror. 5 min
  3. 3 Dynamic invoke Learn dynamic invoke with reflectable. 5 min
  4. 4 Macro Learn the Dart 3 macro experiment. 5 min
  5. 5 Code generation Learn code generation with source_gen. 5 min
  6. 6 Summary - Metaprogramming Combine reflection, mirrors and source_gen to write a code generator. 5 min
5
Shelf server
6 lessons · 30 min
  1. 1 shelf Learn HTTP servers with shelf. 5 min
  2. 2 Handler Learn request handling with a shelf Handler. 5 min
  3. 3 Middleware Learn middleware with shelf Middleware. 5 min
  4. 4 Router Learn routing with shelf_router. 5 min
  5. 5 JSON response Learn JSON responses with shelf. 5 min
  6. 6 Summary - Shelf Combine Handler, Middleware and Router to write an API. 5 min
6
HTTP client
6 lessons · 30 min
  1. 1 http package Learn the HTTP client with the http package. 5 min
  2. 2 GET Learn GET requests with http.get. 5 min
  3. 3 POST Learn POST requests with http.post. 5 min
  4. 4 Headers Learn headers and authorization. 5 min
  5. 5 dio Learn the advanced HTTP client with dio. 5 min
  6. 6 Summary - HTTP Combine http.get, http.post and dio to write an API client. 5 min
7
JSON serialization
6 lessons · 30 min
  1. 1 jsonDecode Learn JSON parsing with jsonDecode. 5 min
  2. 2 jsonEncode Learn to produce JSON with jsonEncode. 5 min
  3. 3 fromJson Learn to create objects with fromJson. 5 min
  4. 4 toJson Learn to convert objects to JSON with toJson. 5 min
  5. 5 json_serializable Learn code generation with json_serializable. 5 min
  6. 6 Summary - JSON Combine jsonDecode, fromJson and json_serializable to write an API client. 5 min
8
Database
6 lessons · 30 min
  1. 1 sqflite Learn SQLite with sqflite. 5 min
  2. 2 Database Learn connection and queries with Database. 5 min
  3. 3 CRUD Learn CRUD operations with sqflite. 5 min
  4. 4 Transaction Learn atomic operations with Transaction. 5 min
  5. 5 ORM Learn Dart database with the drift ORM. 5 min
  6. 6 Summary - Database Combine sqflite, CRUD and transactions to write a user database. 5 min
9
Web Dart
6 lessons · 30 min
  1. 1 dart2js Learn JavaScript compilation with dart2js. 5 min
  2. 2 dart2wasm Learn WebAssembly with dart2wasm. 5 min
  3. 3 HTML interop Learn DOM access with dart:html. 5 min
  4. 4 JS interop Learn JavaScript interop with dart:js_interop. 5 min
  5. 5 Web framework Learn web frameworks like jaspr. 5 min
  6. 6 Summary - Web Dart Combine dart2js, dart:html and js_interop to write a web component. 5 min
10
CLI applications
6 lessons · 30 min
  1. 1 args Learn CLI arguments with the args package. 5 min
  2. 2 ArgParser Learn option processing with ArgParser. 5 min
  3. 3 stdin/stdout Learn I/O with stdin and stdout. 5 min
  4. 4 Progress bar Learn progress bars with cli_util. 5 min
  5. 5 dcli Learn advanced CLI with dcli. 5 min
  6. 6 Summary - CLI Combine args, ArgParser and stdin to write a CLI tool. 5 min
11
Logging
6 lessons · 30 min
  1. 1 logging Learn logging with the logging package. 5 min
  2. 2 Log levels Learn log levels (info, warning, severe). 5 min
  3. 3 Logger Learn Logger instances and hierarchy. 5 min
  4. 4 Handler Learn log handlers and output targets. 5 min
  5. 5 Structured logging Learn structured logging and JSON format. 5 min
  6. 6 Summary - Logging Combine logging, levels and handlers to write a log system. 5 min
12
Security
6 lessons · 30 min
  1. 1 crypto Learn hashing with the crypto package. 5 min
  2. 2 HMAC Learn message authentication with Hmac. 5 min
  3. 3 encrypt Learn encryption with the encrypt package. 5 min
  4. 4 Secure random Learn secure random with Random.secure. 5 min
  5. 5 Password hashing Learn password hashing (bcrypt). 5 min
  6. 6 Summary - Security Combine crypto, HMAC and encrypt to write an encryptor. 5 min
13
Performance
6 lessons · 30 min
  1. 1 Benchmark Learn performance measurement with benchmark. 5 min
  2. 2 Stopwatch Learn time measurement with Stopwatch. 5 min
  3. 3 Memory Learn memory usage. 5 min
  4. 4 Optimization Learn common optimization techniques. 5 min
  5. 5 Profiling Learn DevTools profiling. 5 min
  6. 6 Summary - Performance Combine benchmark, Stopwatch and profiling to write a perf tool. 5 min
14
Advanced finalProject
5 lessons · 30 min
  1. 1 Project design Design the skeleton of the advanced final mini app. 6 min
  2. 2 Shelf API Set up the REST API skeleton with Shelf. 6 min
  3. 3 Database Add data persistence with sqflite. 6 min
  4. 4 Concurrency Add parallel processing with Isolate. 6 min
  5. 5 Putting it together Combine all layers into a working mini service. 6 min

Learn language design, compiler internals, FFI, native extensions and large-scale architecture in Dart.

1
Language design
6 lessons · 30 min
  1. 1 Dart design Learn Dart language design principles. 5 min
  2. 2 Sound null safety Learn sound null safety and the type system. 5 min
  3. 3 Type system Learn the Dart type system and variance. 5 min
  4. 4 Subtyping Learn subtyping and polymorphism. 5 min
  5. 5 Records and patterns Learn records and patterns design. 5 min
  6. 6 Summary - Language design Combine null safety, type system and records to write a type system summary. 5 min
2
Compiler internals
6 lessons · 30 min
  1. 1 Compilation pipeline Learn the Dart compilation pipeline. 5 min
  2. 2 AST Learn the Abstract Syntax Tree (AST) structure. 5 min
  3. 3 Kernel Learn Dart Kernel and intermediate representation. 5 min
  4. 4 Code generation Learn code generation and backends. 5 min
  5. 5 dartaotruntime Learn the difference between AOT and JIT runtimes. 5 min
  6. 6 Summary - Compiler internals Combine pipeline, AST and Kernel to write a compiler summary. 5 min
3
FFI
6 lessons · 30 min
  1. 1 dart:ffi Learn C interop with dart:ffi. 5 min
  2. 2 DynamicLibrary Learn native loading with DynamicLibrary. 5 min
  3. 3 Native function Learn native functions with lookupFunction. 5 min
  4. 4 Struct Learn C structs with Struct. 5 min
  5. 5 Pointer Learn memory management with Pointer. 5 min
  6. 6 Summary - FFI Combine DynamicLibrary, lookupFunction and Pointer to write a native wrapper. 5 min
4
Native extension
6 lessons · 30 min
  1. 1 What are extensions? Learn the Dart extension concept. 5 min
  2. 2 Extension method Learn to write extension methods. 5 min
  3. 3 Extension operator Learn extension operator overloading. 5 min
  4. 4 Generic extension Learn to write generic extensions. 5 min
  5. 5 Extension vs subclass Learn the difference between extension and subclass. 5 min
  6. 6 Summary - Native extension Combine extension methods, operators and generics to write a string helper extension. 5 min
5
Build system
6 lessons · 30 min
  1. 1 build_runner Learn code generation with build_runner. 5 min
  2. 2 Builder Learn code generators with Builder. 5 min
  3. 3 source_gen Learn source code generation with source_gen. 5 min
  4. 4 Analyzer Learn the dart analyzer and plugins. 5 min
  5. 5 Custom lint Learn to write custom lint rules. 5 min
  6. 6 Summary - Build system Combine build_runner, Builder and source_gen to write a code generator. 5 min
6
Architecture
6 lessons · 30 min
  1. 1 Clean architecture Learn clean architecture principles. 5 min
  2. 2 Feature-based Learn feature-based architecture. 5 min
  3. 3 Repository Learn the repository pattern. 5 min
  4. 4 Dependency injection Learn dependency injection. 5 min
  5. 5 SOLID Learn SOLID principles. 5 min
  6. 6 Summary - Architecture Combine clean, repository and DI to write an architecture skeleton. 5 min
7
Advanced testing
6 lessons · 30 min
  1. 1 Integration tests Learn to write integration tests. 5 min
  2. 2 Property tests Learn property-based testing. 5 min
  3. 3 Advanced mocking Learn advanced mock and stub. 5 min
  4. 4 Coverage Learn test coverage measurement. 5 min
  5. 5 Golden tests Learn golden tests and snapshots. 5 min
  6. 6 Summary - Advanced testing Combine integration, property and coverage to write a test suite. 5 min
8
Expert finalProject
5 lessons · 30 min
  1. 1 Project design Design the skeleton of the expert final mini app. 6 min
  2. 2 FFI Write native integration with dart:ffi. 6 min
  3. 3 Codegen Write code generation with build_runner. 6 min
  4. 4 Architecture Combine layers with clean architecture. 6 min
  5. 5 Putting it together Combine all expert topics into a working mini app. 6 min

Lessons are free, an account keeps your progress

You do not have to sign up. If you do, you continue where you left off and never lose your work.

  • Progress saved on every device
  • Earn XP and badges
  • Keep your daily streak
  • Get a certificate when you finish
create a free account

Frequently asked questions

Are the Dart lessons free?

Yes. All 362 lessons of the Dart course are free and you can start without an account.

Do I need any prior knowledge?

No. The beginner level starts from zero; a browser is all you need. If you already know the basics, start at a higher level.

How long does the course take?

Lessons take 2–8 minutes. The whole course is about 30 hours; with 15–20 minutes a day you can finish in a few months.

Do I get a certificate?

Yes. When you complete the course with a free account, a verifiable certificate is issued in your name.

Will I lose my progress without an account?

Without an account your progress is kept only in your current browser. When you create a free account it is moved to your account.

Next step Kotlin

Learn Kotlin 2.x from null safety, OOP, coroutines, Flow to Ktor and Kotlin Multiplatform with hands-on projects.