Dart Cheat Sheet
Complete reference guide for Dart with interactive examples and live playground links
Click on any section to jump directly to it
Basic Syntax
Hello World
Basic Dart program structure
Dart
void main() {
print('Hello, World!');
}
Variables and Data Types
Variable declaration and basic data types
Dart
// Variable declaration
var name = 'Dart'; // Type inference
String language = 'Dart'; // Explicit type
int number = 42; // Integer
double pi = 3.14159; // Double
bool isActive = true; // Boolean
List<String> fruits = ['apple', 'banana']; // List
Map<String, int> scores = { // Map
'Alice': 100,
'Bob': 90
};
// Constants
const maxValue = 100;
final currentTime = DateTime.now();
// Null safety
String? nullableName; // Nullable
late String lateName; // Late initialization
String Operations
Common string operations
Dart
String text = 'Hello World';
// String methods
print(text.length); // 11
print(text.toUpperCase()); // HELLO WORLD
print(text.toLowerCase()); // hello world
print(text.contains('World')); // true
print(text.replaceAll('World', 'Dart')); // Hello Dart
// String interpolation
String name = 'Dart';
print('Hello, $name!'); // Hello, Dart!
print('Sum: 3'); // Sum: 3
// Multi-line strings
String multiLine = '''
Line 1
Line 2
Line 3
''';
Collections
Working with collections
Dart
// Lists
List<int> numbers = [1, 2, 3, 4, 5];
numbers.add(6); // Add element
numbers.remove(3); // Remove element
numbers.length; // Get length
numbers.first; // First element
numbers.last; // Last element
// Sets
Set<String> fruits = {'apple', 'banana', 'orange'};
fruits.add('mango'); // Add element
fruits.remove('banana'); // Remove element
fruits.contains('apple'); // Check existence
// Maps
Map<String, int> scores = {
'Alice': 100,
'Bob': 90
};
scores['Charlie'] = 95; // Add/update
scores.remove('Bob'); // Remove
scores.containsKey('Alice'); // Check key
Control Structures
Control flow statements
Dart
// If-else
if (age >= 18) {
print('Adult');
} else if (age >= 13) {
print('Teenager');
} else {
print('Child');
}
// Switch
switch (status) {
case 1:
print('Active');
break;
case 2:
print('Inactive');
break;
default:
print('Unknown');
}
// Loops
for (var i = 0; i < 5; i++) {
print(i);
}
for (var item in items) {
print(item);
}
while (condition) {
// Do something
}
do {
// Do something
} while (condition);
Functions
Function Definition
Different ways to define functions
Dart
// Basic function
int add(int a, int b) {
return a + b;
}
// Arrow function
int multiply(int a, int b) => a * b;
// Optional parameters
void greet(String name, [String? title]) {
print('Hello, ${title ?? ''} $name');
}
// Named parameters
void setUser({String? name, int? age}) {
print('Name: $name, Age: $age');
}
// Default values
void connect({String host = 'localhost', int port = 8080}) {
print('Connecting to $host:$port');
}
// Function as parameter
void process(Function callback) {
callback();
}
Async Functions
Asynchronous programming
Dart
// Future
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
return 'Data loaded';
}
// Async/await
void main() async {
try {
final data = await fetchData();
print(data);
} catch (e) {
print('Error: $e');
}
}
// Stream
Stream<int> countStream() async* {
for (var i = 1; i <= 5; i++) {
await Future.delayed(Duration(seconds: 1));
yield i;
}
}
// Using streams
void main() async {
await for (final count in countStream()) {
print(count);
}
}
Object-Oriented Programming
Classes and Objects
Basic class and object usage
Dart
class Person {
// Instance variables
String name;
int age;
// Constructor
Person(this.name, this.age);
// Named constructor
Person.anonymous() : name = 'Anonymous', age = 0;
// Getter
String get description => '$name is $age years old';
// Setter
set age(int value) {
if (value < 0) throw ArgumentError('Age cannot be negative');
age = value;
}
// Method
void greet() {
print('Hello, I am $name');
}
}
// Creating objects
final person = Person('Alice', 25);
person.greet();
Inheritance and Interfaces
Inheritance and interfaces
Dart
// Abstract class
abstract class Animal {
String name;
Animal(this.name);
void makeSound();
}
// Interface
class Flyable {
void fly() {
print('Flying...');
}
}
// Implementation
class Bird extends Animal implements Flyable {
Bird(String name) : super(name);
@override
void makeSound() {
print('$name says: Tweet!');
}
@override
void fly() {
print('$name is flying');
}
}
// Using inheritance
final bird = Bird('Sparrow');
bird.makeSound();
bird.fly();
Mixins
Working with mixins
Dart
// Mixin
mixin Logger {
void log(String message) {
print('Log: $message');
}
}
mixin Validator {
bool isValid(String input) {
return input.isNotEmpty;
}
}
// Using mixins
class User with Logger, Validator {
String name;
User(this.name);
void updateName(String newName) {
if (isValid(newName)) {
name = newName;
log('Name updated to $newName');
}
}
}
// Using the class
final user = User('Alice');
user.updateName('Bob');
Flutter Basics
Widgets
Basic Flutter widgets
Dart
// Stateless widget
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(16),
child: Column(
children: [
Text('Hello, Flutter!'),
ElevatedButton(
onPressed: () {
print('Button pressed');
},
child: Text('Click me'),
),
],
),
);
}
}
// Stateful widget
class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int count = 0;
void increment() {
setState(() {
count++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Count: $count'),
ElevatedButton(
onPressed: increment,
child: Text('Increment'),
),
],
);
}
}
Navigation
Screen navigation in Flutter
Dart
// Push to new screen
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(),
),
);
// Pop current screen
Navigator.pop(context);
// Push and replace
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => NewScreen(),
),
);
// Push and remove until
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
),
(route) => false,
);
State Management
State management with Provider
Dart
// Provider
class CounterProvider extends ChangeNotifier {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners();
}
}
// Using provider
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<CounterProvider>(
builder: (context, counter, child) {
return Column(
children: [
Text('Count: ${counter.count}'),
ElevatedButton(
onPressed: counter.increment,
child: Text('Increment'),
),
],
);
},
);
}
}
Dart - Interactive Developer Reference
Hover over code blocks to copy or run in live playground