← Back to home

Dart roadmap for Flutter beginners

This roadmap guides you through the core Dart ideas in a tree-like order, so you can grow from simple syntax into real app-building confidence.

Want to practice while you learn?Start with Dart Island

Base roadmap

Follow the path from basics to app-ready Dart

Beginner-friendly learning tree

Start here

Dart foundations for Flutter

Build from syntax and values to reusable code and safe app logic.

1

Foundations

Learn the language pieces that every Flutter app uses.

  • Variables
    Store values in named boxes.
  • Data Types
    Understand strings, ints, and booleans.
2

Decision Flow

Teach your code when to take one path or another.

  • Conditionals
    Use if, else if, and else.
  • Loops
    Repeat steps without copy-paste.
3

Code Structure

Start organizing logic so your apps stay readable.

  • Functions
    Reuse logic with small building blocks.
  • Lists & Maps
    Store collections of values.
4

Safe & Object-Oriented Dart

Prepare for real projects with safer code and classes.

  • Null Safety
    Avoid common runtime bugs.
  • OOP Basics
    Model data and behavior with classes.

What you will learn

  • • Variables, data types, and print output
  • • Decision making with if/else and switch
  • • Repeating logic with loops and functions
  • • Collections, null safety, and object-oriented programming

Suggested order

  1. 1. Start with variables and data types
  2. 2. Practice conditions and loops
  3. 3. Learn functions and collections
  4. 4. Move into null safety and classes

Topic 1

Variables

A variable is a box where we store information.
void main() {
  String country = 'USA';
  int age = 21;
  double height = 5.9;
  var name = 'John';

  print(country);
  print(age);
  print(height);
  print(name);
}

Topic 2

Data Types

Data types tell Dart what kind of value a variable should hold.
void main() {
  int age = 21;
  double temp = 36.6;
  String message = 'Hello';
  bool isStudent = true;

  List<String> fruits = ['Apple', 'Banana'];
  Map<String, dynamic> person = {
    'name': 'John',
    'age': 21,
  };

  print(fruits);
  print(person);
}

Topic 3

Conditionals

Use if, else if, and else to make decisions in your code.
void main() {
  int marks = 75;

  if (marks >= 80) {
    print('Excellent');
  } else if (marks >= 60) {
    print('Good');
  } else {
    print('Try Again');
  }
}

Topic 4

Loops

Loops repeat code until a condition is met.
void main() {
  for (int i = 1; i <= 5; i++) {
    print(i);
  }

  int j = 0;
  while (j < 3) {
    print(j);
    j++;
  }
}

Topic 5

Functions

Functions let you reuse code and keep programs organized.
int add(int a, int b) {
  return a + b;
}

void main() {
  int result = add(5, 3);
  print(result);
}

Topic 6

Lists and Maps

Lists store ordered values, while maps store key-value pairs.
void main() {
  List<String> fruits = ['Apple', 'Banana', 'Mango'];
  Map<String, dynamic> student = {
    'name': 'John',
    'age': 21,
  };

  print(fruits[0]);
  print(student['name']);
}

Topic 7

Null Safety

Null safety helps prevent bugs caused by missing values.
void main() {
  String? name;
  name = 'John';

  print(name);
  print(name!);
}

Topic 8

OOP Basics

Classes and objects help you model real-world things in Dart.
class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void introduce() {
    print('Hi, I am $name');
  }
}

void main() {
  Person p = Person('John', 21);
  p.introduce();
}

Next Step

Ready to build your first Flutter app?

You've mastered Dart! Now it's time to learn Flutter foundations and start building real applications.

View Flutter Foundation