Learn Dart
A free, interactive online Dart course. You write Dart on every lesson - syntax, classes, async/await, futures, and the foundations you need for Flutter - with AI hints when async gets weird, and a free certificate when you finish.
18,167+ codders enrolled
- Beginner friendly
AI-assisted coding help
Hands-on interactive lessons
Audio narration on every lesson
Quizzes to test your knowledge
Free certificate of completion
Syllabus
Section 1
Fundamentals
Start sectionStartExpandCollapseBuild a strong foundation with essential concepts and basic skillsIntroduction to Dart
4 lessons224- 01What is Dart?Challenge
- 02The main FunctionQuiz
- 03Printing OutputChallengeQuiz
- 04Code CommentsQuiz
Variables and Basic Data Types
11 lessons1075- 01What are Variables?Quiz
- 02StringsChallengeQuiz
- 03Integers (int)ChallengeQuiz
- 04Doubles (double)ChallengeQuiz
- 05Booleans (bool)ChallengeQuiz
- 06Type Inference with 'var'ChallengeQuiz
- 07Final VariablesChallengeQuiz
- 08Constant VariablesChallengeQuiz
- 09Naming ConventionsChallengeQuiz
- 10Basic Null SafetyChallengeQuiz
- 11Recap - Declaring VariablesChallenge
Operators Part 1
6 lessons638- 01Arithmetic OperatorsChallengeQuiz
- 02Integer DivisionChallengeQuiz
- 03Modulo OperatorChallengeQuiz
- 04Increment and DecrementChallengeQuiz
- 05Assignment ShortcutsChallengeQuiz
- 06Recap - Simple CalculationsChallenge
Operators Part 2
6 lessons636- 01Comparison OperatorsChallengeQuiz
- 02Logical ANDChallengeQuiz
- 03Logical ORChallengeQuiz
- 04Logical NOTChallengeQuiz
- 05Type Test OperatorsChallengeQuiz
- 06Recap - Making ComparisonsChallenge
Operators Part 3
3 lessons320- 01Null-aware OperatorChallengeQuiz
- 02Null-aware AccessChallengeQuiz
- 03Conditional OperatorChallengeQuiz
Control Flow - Decision Making
6 lessons636- 01The 'if' StatementChallengeQuiz
- 02The 'else' StatementChallengeQuiz
- 03The 'else if' StatementChallengeQuiz
- 04Recap - Simple DecisionsChallenge
- 05Nested 'if' StatementsChallengeQuiz
- 06The 'switch' StatementChallengeQuiz
Working with Strings
5 lessons538- 01String ConcatenationChallengeQuiz
- 02String InterpolationChallengeQuiz
- 03Multi-line StringsChallengeQuiz
- 04String PropertiesChallengeQuiz
- 05Basic String MethodsChallengeQuiz
Control Flow - Loops
6 lessons637- 01The 'for' LoopChallengeQuiz
- 02The 'while' LoopChallengeQuiz
- 03The 'do-while' LoopChallengeQuiz
- 04Using 'break' in LoopsChallengeQuiz
- 05Using 'continue' in LoopsChallengeQuiz
- 06Recap - Repeating CodeChallenge
Collections - Lists Basics
8 lessons759- 01What are Lists?Quiz
- 02Creating a ListChallengeQuiz
- 03Accessing by IndexChallengeQuiz
- 04Getting List LengthChallengeQuiz
- 05Adding ElementsChallengeQuiz
- 06Removing ElementsChallengeQuiz
- 07Checking if a List is EmptyChallengeQuiz
- 08Iterating Over a ListChallengeQuiz
Collections - Maps Basics
8 lessons757- 01What are Maps?Quiz
- 02Creating a MapChallengeQuiz
- 03Accessing Values by KeyChallengeQuiz
- 04Key-Value PairsChallengeQuiz
- 05Getting Map SizeChallengeQuiz
- 06Getting KeysChallengeQuiz
- 07Getting ValuesChallengeQuiz
- 08Checking if a Key ExistsChallengeQuiz
Functions Basics
8 lessons753- 01What are Functions?Quiz
- 02Defining a Basic FunctionChallengeQuiz
- 03Calling a FunctionChallengeQuiz
- 04Functions with ParametersChallengeQuiz
- 05Functions Returning ValuesChallengeQuiz
- 06The 'void' KeywordChallengeQuiz
- 07Arrow SyntaxChallengeQuiz
- 08Recap - Simple FunctionsChallenge
Functions Advanced
5 lessons532- 01Optional Positional ParametersChallengeQuiz
- 02Named ParametersChallengeQuiz
- 03Required Named ParametersChallengeQuiz
- 04Default Parameter ValuesChallengeQuiz
- 05Recap - Function ParametersChallenge
Null Safety In Depth
6 lessons639- 01Understanding NullChallengeQuiz
- 02Nullable TypesChallengeQuiz
- 03Non-Nullable TypesChallengeQuiz
- 04Null Assertion OperatorChallengeQuiz
- 05Late InitializationChallengeQuiz
- 06Recap - Handling Null SafelyChallenge
Type Conversion
4 lessons430- 01Converting String to intChallengeQuiz
- 02Converting String to doubleChallengeQuiz
- 03Converting Numbers to StringChallengeQuiz
- 04Handling Conversion ErrorsChallengeQuiz
Project: Simple Calculator
Project5 lessons1- 01Setting UpChallenge
- 02Declaring NumberProject
- 03Creating an OperationProject
- 04Performing CalculationProject
- 05Displaying ResultProject
Fundamentals Challenges
3 lessons3- 01Challenge: List of calculationChallenge
- 02Challenge: Sum of numbersChallenge
- 03Challenge: Find productChallenge
Section 2
Logic & Flow
Start sectionStartExpandCollapseMaster advanced Dart programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.Advanced List Manipulation
9 lessons959- 01 List Properties: first & lastChallengeQuiz
- 02List State: isEmpty & isNotEmpChallengeQuiz
- 03Reversing a ListChallengeQuiz
- 04Adding to a List: insertChallengeQuiz
- 05List Removal: removeWhereChallengeQuiz
- 06Finding in a List: indexOfChallengeQuiz
- 07Sorting a ListChallengeQuiz
- 08Shuffling a ListChallengeQuiz
- 09Recap - List OrganizerChallenge
Functional List Operations
7 lessons746- 01Transforming with 'map'ChallengeQuiz
- 02Filtering with 'where'ChallengeQuiz
- 03Using '.toList()'ChallengeQuiz
- 04Checking Conditions with 'any'ChallengeQuiz
- 05Conditions with 'every'ChallengeQuiz
- 06Finding with 'firstWhere'ChallengeQuiz
- 07Recap - Data FilteringChallenge
Sets
9 lessons864- 01What is a Set?Quiz
- 02Creating a SetChallengeQuiz
- 03Adding and Removing from SetsChallengeQuiz
- 04Checking for Elements in a SetChallengeQuiz
- 05Converting a List to a SetChallengeQuiz
- 06Set UnionChallengeQuiz
- 07Set IntersectionChallengeQuiz
- 08Set DifferenceChallengeQuiz
- 09Recap - Unique Guest ListChallenge
Advanced Map Manipulation
7 lessons745- 01Iterating Over a MapChallengeQuiz
- 02Checking for Keys and ValuesChallengeQuiz
- 03Map Properties: keys & valuesChallengeQuiz
- 04Conditional Add: putIfAbsentChallengeQuiz
- 05Removing Entries from a MapChallengeQuiz
- 06Nested MapsChallengeQuiz
- 07Recap - Inventory UpdateChallenge
Project: Shopping Cart Calc
Project5 lessons1- 01Project SetupChallenge
- 02Adding Items to the CartProject
- 03Calculating the Total CostProject
- 04Applying a DiscountProject
- 05Displaying the Final ReceiptProject
Basic Error Handling
6 lessons541- 01What are Exceptions?Quiz
- 02The 'try-catch' BlockChallengeQuiz
- 03Catching Exceptions with 'on'ChallengeQuiz
- 04The 'finally' BlockChallengeQuiz
- 05Throwing an ExceptionChallengeQuiz
- 06Recap - Safe DivisionChallenge
Advanced Functions
7 lessons646- 01Anonymous FunctionsChallengeQuiz
- 02Passing Functions as ArgumentsChallengeQuiz
- 03Understanding ClosuresChallengeQuiz
- 04Introduction to RecursionQuiz
- 05Recursive Function: CountdownChallengeQuiz
- 06Recursive Function: FactorialChallengeQuiz
- 07Recap - List ProcessorChallenge
Project: Simple Text Analyzer
Project7 lessons18- 01Project Overview and SetupChallengeQuiz
- 02Counting CharactersProject
- 03Splitting Text into WordsProject
- 04Counting WordsProject
- 05Counting Unique WordsProject
- 06Word Frequency CounterProject
- 07Displaying the AnalysisProject
Enumerations (Enums)
5 lessons433- 01What are Enums?Quiz
- 02Defining a Simple EnumChallengeQuiz
- 03Using Enums in VariablesChallengeQuiz
- 04Enums in 'switch' StatementsChallengeQuiz
- 05Recap - Traffic LightChallenge
Final Challenges
3 lessons3- 01Challenge: Grade SorterChallenge
- 02Challenge: Vowel CounterChallenge
- 03Challenge: FizzBuzzChallenge
Section 3
Object Oriented Programming
Start sectionStartExpandCollapseDiscover how to organize code with classes, objects, and reusable structuresFundamentals of OOP
9 lessons971- 01External FilesChallengeQuiz
- 02Libraries & ImportsChallengeQuiz
- 03Introduction to OOPChallengeQuiz
- 04Classes vs ObjectsChallengeQuiz
- 05The this KeywordChallengeQuiz
- 06MethodsChallengeQuiz
- 07Instance VariablesChallengeQuiz
- 08Constructor BasicsChallengeQuiz
- 09Recap - Simple CalculatorChallenge
Constructors in Dart
7 lessons753- 01Default ConstructorChallengeQuiz
- 02Named ConstructorsChallengeQuiz
- 03Initializer ListsChallengeQuiz
- 04Constant ConstructorsChallengeQuiz
- 05Factory ConstructorsChallengeQuiz
- 06Redirecting ConstructorsChallengeQuiz
- 07Recap - Shape BuilderChallenge
Class Properties
6 lessons644- 01Instance vs Static MembersChallengeQuiz
- 02Final & Const FieldsChallengeQuiz
- 03Late VariablesChallengeQuiz
- 04Static Methods & FieldsChallengeQuiz
- 05Getters and SettersChallengeQuiz
- 06Recap - Bank Account ManagerChallenge
Null Safety
7 lessons754- 01Intro to Null SafetyChallengeQuiz
- 02Nullable vs Non-NullableChallengeQuiz
- 03The ? and ! OperatorsChallengeQuiz
- 04Late Keyword & Null SafetyChallengeQuiz
- 05Null-Aware OperatorsChallengeQuiz
- 06Null Safety in ClassesChallengeQuiz
- 07Recap - User Profile SystemChallenge
Encapsulation
6 lessons641- 01Public vs Private MembersChallengeQuiz
- 02The _ Prefix ConventionChallengeQuiz
- 03Library-Level PrivacyChallengeQuiz
- 04Getters & Setters DepthChallengeQuiz
- 05Information HidingChallengeQuiz
- 06Recap - Student RecordsChallenge
Inheritance
7 lessons750- 01Basic InheritanceChallengeQuiz
- 02The super KeywordChallengeQuiz
- 03Method OverridingChallengeQuiz
- 04The @override AnnotationChallengeQuiz
- 05The final Class KeywordChallengeQuiz
- 06Constructors & InheritanceChallengeQuiz
- 07Recap - Employee HierarchyChallenge
Abstract Classes & Interfaces
7 lessons753- 01Abstract ClassesChallengeQuiz
- 02Abstract MethodsChallengeQuiz
- 03Interfaces in DartChallengeQuiz
- 04Implicit InterfacesChallengeQuiz
- 05Implementing vs ExtendingChallengeQuiz
- 06Multiple InterfacesChallengeQuiz
- 07Recap - Shape CalculatorChallenge
Mixins
7 lessons752- 01Introduction to MixinsChallengeQuiz
- 02Creating MixinsChallengeQuiz
- 03Using Multiple MixinsChallengeQuiz
- 04on Keyword in MixinsChallengeQuiz
- 05Mixin vs InheritanceChallengeQuiz
- 06Mixin vs InterfaceChallengeQuiz
- 07Recap - Animal SystemChallenge
Polymorphism
6 lessons643- 01Polymorphism BasicsChallengeQuiz
- 02Polymorphism via InterfacesChallengeQuiz
- 03Runtime Type CheckingChallengeQuiz
- 04The is & as OperatorsChallengeQuiz
- 05Covariant KeywordChallengeQuiz
- 06Recap - Payment ProcessorChallenge
Collections & Generics
7 lessons754- 01List, Set, Map OverviewChallengeQuiz
- 02Type-Safe CollectionsChallengeQuiz
- 03Generic ClassesChallengeQuiz
- 04Generic MethodsChallengeQuiz
- 05Generic ConstraintsChallengeQuiz
- 06Iterable & IteratorChallengeQuiz
- 07Recap - Generic StorageChallenge
Special Methods
6 lessons643- 01toString() OverrideChallengeQuiz
- 02hashCode & == OverrideChallengeQuiz
- 03Comparable InterfaceChallengeQuiz
- 04call() MethodChallengeQuiz
- 05noSuchMethod OverrideChallengeQuiz
- 06Recap - Custom CollectionChallenge
Async OOP
6 lessons645- 01Futures & async/awaitChallengeQuiz
- 02Streams BasicsChallengeQuiz
- 03Stream ControllersChallengeQuiz
- 04Async ConstructorsChallengeQuiz
- 05Async in Class MethodsChallengeQuiz
- 06Recap - Data FetcherChallenge
Advanced OOP Concepts
7 lessons764- 01Composition vs InheritanceChallengeQuiz
- 02Extension MethodsChallengeQuiz
- 03Callable ClassesChallengeQuiz
- 04Sealed Classes (Dart 3)ChallengeQuiz
- 05Records (Dart 3)ChallengeQuiz
- 06Patterns & Matching (3.0)ChallengeQuiz
- 07Enums with MethodsChallengeQuiz
Design Patterns Part 1
5 lessons543- 01Intro to Design PatternsChallengeQuiz
- 02Singleton PatternChallengeQuiz
- 03Factory PatternChallengeQuiz
- 04Observer PatternChallengeQuiz
- 05Strategy PatternChallengeQuiz
Design Patterns Part 2
7 lessons763- 01Command PatternChallengeQuiz
- 02Adapter PatternChallengeQuiz
- 03Decorator PatternChallengeQuiz
- 04Template Method PatternChallengeQuiz
- 05State PatternChallengeQuiz
- 06Composite PatternChallengeQuiz
- 07Repository PatternChallengeQuiz
Project: Library Management
Project6 lessons1- 01Project OverviewChallenge
- 02Book and User ClassesProject
- 03Borrowing SystemProject
- 04Search FunctionalityProject
- 05Admin InterfaceProject
- 06Testing and IntegrationProject
Final Challenges
4 lessons4- 01E-Learning PlatformChallenge
- 02Banking SystemChallenge
- 03Game Character SystemChallenge
- 04Vehicle Rental ServiceChallenge
Dart courses
Hands-on Dart courses, free to start in your browser.
Beginner Challenges - Practice Basic Concepts
PopularPut your beginner coding knowledge to test and try to solve this programming challenges, use any language you want, Happy Coding!
Certificate on completion
- 20
- 20
Coding Problems
PopularPut your programming problem solving skills to the test using the exercises with different difficulties in this course. Designed for coders with some prior knowledge of the basic syntax in any programming language.
Certificate on completion
- 32
- 31
Coding Problems: Volume 2
Put your programming problem solving skills to the test using the exercises with different difficulties in this course. Designed for coders with some prior knowledge of the basic syntax in any programming language. This course is an extension of the first Coding Problems
Certificate on completion
- 25
- 24
Stack - Data Structures Series #1
In this course, you will learn about the Stack data structure, create a Stack from zero using your preferred language, and practice coding challenges with it!
- 13
- 6
- 1
Recursion Challenges - Master The Recursive Thinking
Recursion is an important concept in computer science and a very powerful tool in writing algorithms. In this course, you will use recursion to solve challenges from beginner to advanced. In the end, you will ace this topic.
Certificate on completion
- 15
- 15
Star Pattern Bootcamp
Put your programming problem solving skills to learn how to print star patterns range from simple to complex, involving different levels of nested loops, conditional statements, and mathematical calculations.
- 30
- 28
Why learn Dart with Coddy
- Write and run real Dart code in your browser. No Dart SDK install, no Flutter toolchain setup. Each lesson compiles your Dart program server-side and shows the output instantly.
- Dart as Flutter developers actually use it: variables and types, control flow, functions, classes and inheritance, generics, null-safety, futures, async/await, streams. The Dart foundations every Flutter developer needs.
- AI hints help you read and fix Dart errors and async bugs without spoiling the answer, so concepts like null-safety and futures click instead of confusing you.
- Free Dart certificate when you finish the course. A credible signal for Flutter and mobile-development roles where Dart is the primary language.