Menu
Coddy logo textTech

Dart Spickzettel

Zuletzt aktualisiert

Hello World & Programmaufbau

Jedes Dart-Programm beginnt bei der Top-Level-Funktion main.

OperationSyntax
Einstiegspunktvoid main() { ... }
Eine Zeile ausgebenprint("Hello, World!");
String-Interpolationprint("Hi $name");
Ausdruck in Interpolationprint("Sum: ${a + b}");
Kommentar// this is a comment
Mehrzeiliger Kommentar/* ... */
Eine Bibliothek importierenimport 'dart:math';
Eine Datei ausführendart run main.dart

Variablen & Typen

Dart ist statisch typisiert, kann Typen aber mit var ableiten.

OperationSyntax
Abgeleitete Variablevar age = 30;
Expliziter Typint age = 30;
Compilezeit-Konstanteconst pi = 3.14;
Laufzeit-Konstantefinal name = getName();
Basistypenint, double, String, bool
Dynamischer Typdynamic x = 5;
Typumwandlungint.parse("42"), n.toString()
Typ prüfenx is String, x as String

Null Safety

Typen sind standardmäßig nicht-nullbar; füge ? hinzu, um null zu erlauben.

OperationSyntax
Nicht-nullbar (Standard)int count = 0;
Nullbarer TypString? name;
Null-bewusster Zugriffuser?.name
Null-Coalescingname ?? "default"
Null-Coalescing-Zuweisungname ??= "default";
Nicht-null zusichernname!
Späte Initialisierunglate String value;
Null-bewusster Spread[...?maybeList]

Strings

Strings unterstützen einfache, doppelte und dreifache Anführungszeichen.

OperationSyntax
Länges.length
Groß-/Kleinschreibungs.toUpperCase(), s.toLowerCase()
Interpolation"Total: $price"
Verketten"foo" + "bar"
Enthälts.contains("ell")
Beginnt / endet mits.startsWith("he")
Aufteilen"a,b,c".split(",")
Ersetzens.replaceAll("a", "b")
Teilstrings.substring(0, 3)
Trimmens.trim()

Collections (List, Map, Set)

Drei zentrale Collection-Typen mit Literal-Syntax.

OperationSyntax
List-Literalvar nums = [1, 2, 3];
Zur Liste hinzufügennums.add(4);
Zugriff / Längenums[0], nums.length
Map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
Map-Literalvar ages = {"Ada": 30};
Map-Zugriffages["Ada"]
Set-Literalvar ids = {1, 2, 3};
Spread-Operatorvar all = [...a, ...b];
Collection if / for[if (show) 1, for (n in xs) n]

Kontrollfluss

Bedingungen stehen in Klammern; switch unterstützt Patterns.

OperationSyntax
If / elseif (x > 0) { ... } else { ... }
Ternärvar r = x > 0 ? "pos" : "neg";
Switchswitch (n) { case 1: ...; default: ... }
For-Schleifefor (var i = 0; i < 10; i++) { ... }
For-in-Schleifefor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
While-Schleifewhile (x < 100) { ... }
Do-whiledo { ... } while (x < 100);
Break / continuebreak;, continue;

Funktionen

Funktionen sind erstklassig; die Pfeil-Syntax kürzt einzelne Ausdrücke.

OperationSyntax
Eine Funktion definierenint add(int a, int b) { return a + b; }
Pfeil-Funktionint square(int x) => x * x;
Optional positionalvoid log(String m, [int? code]) { ... }
Benannte Parametervoid box({int w = 0, int h = 0}) { ... }
Erforderlich benanntvoid box({required int w}) { ... }
Anonyme Funktionvar f = (x) => x * 2;
Als Argument übergebennums.map((n) => n * 2)
Typedeftypedef IntOp = int Function(int);

Klassen & Konstruktoren

Klassen halten Zustand und Verhalten; Konstruktoren gibt es in mehreren Formen.

OperationSyntax
Eine Klasse definierenclass Point { int x; int y; }
KonstruktorPoint(this.x, this.y);
Benannter KonstruktorPoint.origin() : x = 0, y = 0;
Instanz erstellenvar p = Point(1, 2);
Methodedouble dist() { ... }
Getterint get area => w * h;
Vererbungclass Circle extends Shape { ... }
super aufrufensuper(args)
Abstrakte Klasseabstract class Shape { ... }
Interface implementierenclass Dog implements Animal { ... }

Async (Future / async-await)

Futures stehen für später verfügbare Werte; await pausiert, bis sie sich auflösen.

OperationSyntax
Async-FunktionFuture<int> load() async { ... }
Auf ein Future wartenvar data = await load();
Einen Wert zurückgebenreturn 42; innerhalb einer Async-Funktion
Verzögerungawait Future.delayed(Duration(seconds: 1));
Fehler behandelntry { await load(); } catch (e) { ... }
Then-Verkettungload().then((v) => print(v));
Parallel ausführenawait Future.wait([a(), b()]);
Async-Streamawait for (var x in stream) { ... }

Die Dart-Syntax, die du am häufigsten brauchst, auf einer Seite. Dieser Dart-Spickzettel ist eine Schnellreferenz für die Kernsprache - Variablen und Typen, Null Safety, Strings, Collections, Kontrollfluss, Funktionen, Klassen sowie die Futures und async/await, mit denen du die Apps hinter Flutter schreibst.

Alles hier ist Standard-Dart und läuft auf dem offiziellen SDK. Kopiere, was du brauchst, oder probiere jeden Codeschnipsel live im Dart-Playground aus - keine Installation nötig.

Dart-Spickzettel FAQ

Ist dieser Dart-Spickzettel kostenlos?
Ja. Dieser Dart-Spickzettel ist völlig kostenlos, ohne erforderliche Anmeldung. Setze ein Lesezeichen und komm jederzeit wieder, wenn du einen Null-Safety-Operator, eine Collection-Methode oder ein Async-Muster nachschlagen möchtest.
Wie funktioniert Null Safety in Dart?
In Dart ist jeder Typ standardmäßig nicht-nullbar - int count kann niemals null halten. Um null zu erlauben, fügst du ein ? hinzu (String? name), und der Compiler zwingt dich dann, den null-Fall zu behandeln. Helfer machen das kompakt: ?. für null-bewussten Zugriff, ?? für einen Ausweichwert und !, um einen Wert als nicht-null zuzusichern, wenn du sicher bist. Das fängt null-Fehler zur Compilezeit statt zur Laufzeit ab.
Was ist ein Future und wie funktionieren async und await?
Ein Future steht für einen Wert, der später verfügbar sein wird, etwa das Ergebnis eines Netzwerkaufrufs. Eine Funktion als async zu markieren erlaubt dir die Verwendung von await, das die Ausführung pausiert, bis das Future abgeschlossen ist, und dir dann den Wert liefert - so schreibst du asynchronen Code, der sich von oben nach unten wie synchroner Code liest. Umschließe awaits mit try/catch, um Fehler zu behandeln.
Kann ich Dart online üben?
Ja. Öffne den Dart-Playground, um jeden Codeschnipsel aus diesem Spickzettel in deinem Browser auszuführen - kein SDK zu installieren. Wenn du Struktur möchtest, führt dich Coddys kostenloser interaktiver Dart-Kurs Schritt für Schritt von Null Safety und Collections zu Klassen und async/await.
Ist dieser Spickzettel für Anfänger geeignet?
Ja. Er ist von den häufigsten Themen (Variablen, Null Safety, Kontrollfluss) hin zu den fortgeschrittenen (Klassen, Futures, async/await) gegliedert, sodass du die oberen Abschnitte schon am ersten Tag nutzen und in den Rest hineinwachsen kannst.
Coddy programming languages illustration

Lerne Dart mit Coddy

LOS GEHT'S