Journey
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.
16,844+ 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
3 sections4 projects269 lessons240 challenges1,689 quiz questions01Section 1
Fundamentals
Build a strong foundation with essential concepts and basic skillsSTART LEARNINGIntroduction to Dart
4 lessons224- 01What is Dart?Challenge
- 02The main FunctionQuizAudio
- 03Printing OutputChallengeQuizAudio
- 04Code CommentsQuizAudio
Variables and Basic Data Types
11 lessons1075- 01What are Variables?QuizAudio
- 02StringsChallengeQuizAudio
- 03Integers (int)ChallengeQuizAudio
- 04Doubles (double)ChallengeQuizAudio
- 05Booleans (bool)ChallengeQuizAudio
- 06Type Inference with 'var'ChallengeQuizAudio
- 07Final VariablesChallengeQuizAudio
- 08Constant VariablesChallengeQuizAudio
- 09Naming ConventionsChallengeQuizAudio
- 10Basic Null SafetyChallengeQuizAudio
- 11Recap - Declaring VariablesChallenge
Operators Part 1
6 lessons638- 01Arithmetic OperatorsChallengeQuizAudio
- 02Integer DivisionChallengeQuizAudio
- 03Modulo OperatorChallengeQuizAudio
- 04Increment and DecrementChallengeQuizAudio
- 05Assignment ShortcutsChallengeQuizAudio
- 06Recap - Simple CalculationsChallenge
Operators Part 2
6 lessons636- 01Comparison OperatorsChallengeQuizAudio
- 02Logical ANDChallengeQuizAudio
- 03Logical ORChallengeQuizAudio
- 04Logical NOTChallengeQuizAudio
- 05Type Test OperatorsChallengeQuizAudio
- 06Recap - Making ComparisonsChallenge
Operators Part 3
3 lessons320- 01Null-aware OperatorChallengeQuizAudio
- 02Null-aware AccessChallengeQuizAudio
- 03Conditional OperatorChallengeQuizAudio
Control Flow - Decision Making
6 lessons636- 01The 'if' StatementChallengeQuizAudio
- 02The 'else' StatementChallengeQuizAudio
- 03The 'else if' StatementChallengeQuizAudio
- 04Recap - Simple DecisionsChallenge
- 05Nested 'if' StatementsChallengeQuizAudio
- 06The 'switch' StatementChallengeQuizAudio
Working with Strings
5 lessons538- 01String ConcatenationChallengeQuizAudio
- 02String InterpolationChallengeQuizAudio
- 03Multi-line StringsChallengeQuizAudio
- 04String PropertiesChallengeQuizAudio
- 05Basic String MethodsChallengeQuizAudio
Control Flow - Loops
6 lessons637- 01The 'for' LoopChallengeQuizAudio
- 02The 'while' LoopChallengeQuizAudio
- 03The 'do-while' LoopChallengeQuizAudio
- 04Using 'break' in LoopsChallengeQuizAudio
- 05Using 'continue' in LoopsChallengeQuizAudio
- 06Recap - Repeating CodeChallenge
Collections - Lists Basics
8 lessons759- 01What are Lists?QuizAudio
- 02Creating a ListChallengeQuizAudio
- 03Accessing by IndexChallengeQuizAudio
- 04Getting List LengthChallengeQuizAudio
- 05Adding ElementsChallengeQuizAudio
- 06Removing ElementsChallengeQuizAudio
- 07Checking if a List is EmptyChallengeQuizAudio
- 08Iterating Over a ListChallengeQuizAudio
Collections - Maps Basics
8 lessons757- 01What are Maps?QuizAudio
- 02Creating a MapChallengeQuizAudio
- 03Accessing Values by KeyChallengeQuizAudio
- 04Key-Value PairsChallengeQuizAudio
- 05Getting Map SizeChallengeQuizAudio
- 06Getting KeysChallengeQuizAudio
- 07Getting ValuesChallengeQuizAudio
- 08Checking if a Key ExistsChallengeQuizAudio
Functions Basics
8 lessons753- 01What are Functions?QuizAudio
- 02Defining a Basic FunctionChallengeQuizAudio
- 03Calling a FunctionChallengeQuizAudio
- 04Functions with ParametersChallengeQuizAudio
- 05Functions Returning ValuesChallengeQuizAudio
- 06The 'void' KeywordChallengeQuizAudio
- 07Arrow SyntaxChallengeQuizAudio
- 08Recap - Simple FunctionsChallenge
Functions Advanced
5 lessons532- 01Optional Positional ParametersChallengeQuizAudio
- 02Named ParametersChallengeQuizAudio
- 03Required Named ParametersChallengeQuizAudio
- 04Default Parameter ValuesChallengeQuizAudio
- 05Recap - Function ParametersChallenge
Null Safety In Depth
6 lessons639- 01Understanding NullChallengeQuizAudio
- 02Nullable TypesChallengeQuizAudio
- 03Non-Nullable TypesChallengeQuizAudio
- 04Null Assertion OperatorChallengeQuizAudio
- 05Late InitializationChallengeQuizAudio
- 06Recap - Handling Null SafelyChallenge
Type Conversion
4 lessons430- 01Converting String to intChallengeQuizAudio
- 02Converting String to doubleChallengeQuizAudio
- 03Converting Numbers to StringChallengeQuizAudio
- 04Handling Conversion ErrorsChallengeQuizAudio
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
02Section 2
Logic & Flow
Master advanced Dart programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.START LEARNINGAdvanced 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
03Section 3
Object Oriented Programming
Discover how to organize code with classes, objects, and reusable structuresSTART LEARNINGFundamentals 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
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.
Frequently asked questions about learning Dart
What is Dart programming used for?
Dart is mainly used to build Flutter apps — Google's cross-platform UI framework that targets iOS, Android, web, Windows, macOS, and Linux from a single codebase. Outside Flutter, Dart is also used for command-line tools and server-side code, but the dominant reason people learn Dart today is Flutter.
Is Dart hard to learn?
Dart is one of the easier statically-typed languages to pick up. The syntax is familiar to anyone who's seen Java, JavaScript, or C#, and it has strong null-safety to prevent common bugs. Most beginners reach their first working Dart program in the first hour and start writing classes within a week.
Should I learn Dart before Flutter?
Yes — at least the basics. You'll move much faster through Flutter once Dart syntax, classes, async/await, and null-safety feel natural. The Dart course is built specifically as a runway into Flutter, so you cover the parts of Dart that show up in real Flutter code.
How long does it take to learn Dart?
Dart basics — variables, control flow, functions, classes — take one to two weeks of daily practice. Becoming comfortable with async/await, futures, and null-safety usually takes another two to four weeks. From there, you can move into Flutter while still picking up advanced Dart features as you need them.
Can I learn Dart online for free?
Yes. The interactive Dart course is free — lessons, coding exercises, quizzes, and a certificate. Dart compiles server-side, so you don't need to install the Dart SDK or set up Flutter locally to start writing real Dart code.
Do I get a certificate after the Dart course?
Yes. Finishing the Dart course gives you a free certificate of completion. A verifiable proof point you can add to your resume or share on LinkedIn, especially useful as a stepping stone toward Flutter development.