EMZETT.
Login

Kurz: - dart.dev/language (Sprachtour), dart.dev/tutorials, flutter.dev/learn - DartPad (dartpad.dev), Flutter-Codelabs, Flutter in Action - Übungen: Exercism (Dart-Track), Advent of Code - Wiki dieser Seite.

Teil des Kurses Dart

Kapitel 8 von 8 im Kurs Dart (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Syntax im Überblick

var x = 1;  final y = 2;  const z = 3;  int? n;  late String s;
int f(int a, {int b = 0, required String c}) => a + b;       void g([int a = 1]) {}
if (...) {} else {}     switch (x) { case 1: ... }     for (var i = 0; i < n; i++) {}     for (final e in liste) {}
class A extends B with M implements I { A(this.x); final int x; }     abstract class T {}     mixin M {}     enum E { a, b }
extension X on String { int get doppelt => length * 2; }     sealed class S {}
Future<int> h() async { return await andere(); }     Stream<int> s() async* { yield 1; }
try {} on Fehler catch (e, st) {} finally {}     throw Exception('...');

Wichtige Typen und Methoden

TypBeispiele
int, double, numabs round floor ceil toStringAsFixed parse tryParse isEven
Stringlength substring split trim replaceAll contains startsWith toUpperCase padLeft
List<T>add insert remove sort map where reduce fold any every take skip join
Map<K, V>[k], containsKey, putIfAbsent, update, forEach, entries, keys, values
Set<T>add contains union intersection difference
Future<T> / Stream<T>then, await, Future.wait, listen, await for, map, where
Dateien/JSONFile.readAsString, jsonEncode, jsonDecode

Dart im Vergleich

ThemaDart
Typisierungstatisch, null-sicher, mit Inferenz (var)
NebenläufigkeitFuture/Stream mit async/await; Parallelität über Isolates (kein gemeinsamer Speicher)
Zugriffprivat durch _ vor dem Namen (pro Bibliothek)
KompilierungJIT (Entwicklung, Hot Reload), AOT (Release), JavaScript (Web)
Paketepub.dev, pubspec.yaml

Häufige Fehler

Meldung / ProblemUrsache
A value of type 'int?' can't be assigned to a variable of type 'int'Null-Sicherheit: ??, ! oder Prüfung
The method 'x' isn't defined for the type 'Object?'Typ zu allgemein (dynamic/Object): Typ angeben oder casten
Null check operator used on a null value! auf null
type 'X' is not a subtype of type 'Y'falscher Typ zur Laufzeit (JSON!): as-Casts prüfen
LateInitializationErrorlate Variable vor Zuweisung gelesen
Fehlendes awaitFuture statt Wert: await oder .then
setState() called after dispose()Flutter: async-Ergebnis nach Verlassen der Seite; mounted prüfen
Pfeilsyntax mit mehreren Anweisungen=> nur für Ausdrücke; sonst { ... }

Weiterlernen

  • dart.dev/language (Sprachtour), dart.dev/tutorials, flutter.dev/learn
  • DartPad (dartpad.dev), Flutter-Codelabs, Flutter in Action
  • Übungen: Exercism (Dart-Track), Advent of Code
  • Wiki dieser Seite: Artikel zu mobilen Apps und plattformübergreifender Entwicklung

Merke

  • Dart: moderne, null-sichere OOP-Sprache mit Future/Stream und Records/Mustern (Dart 3)
  • Flutter baut Oberflächen aus Widgets für alle Plattformen
  • dart analyze, dart format, dart test gehören zum Alltag

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Projekte und Algorithmen

Alle Kapitel: Dart im Überblick