← Flutter / Dart

Flutter / Dart · 07 / 18

Klassen und Konstruktoren

Du bündelst zusammengehörige Werte in einem eigenen Datentyp.

  • Klein
  • Grundlagen
  • 15 min

Voraussetzungen: Listen, Sets und Maps

Wenn Name und Kilometerstand in getrennten Variablen stehen, kann ihre Zuordnung unklar werden. Eine Klasse beschreibt einen eigenen Datentyp mit benannten Feldern. Ein Objekt ist ein konkreter Wert dieses Typs. Ein Konstruktor legt fest, wie ein Objekt erzeugt wird. Für zwei Fahrzeuge erzeugen wir zwei getrennte Objekte.

Beispieldateien

01Ein Modell definieren

Vehicle hat die Felder name und mileage. final verhindert, dass ihre Werte nach dem Erzeugen ausgetauscht werden. Das Modell enthält keine Bildschirm- oder Datenbankdetails.

models.dart · dartDatei öffnen
class Vehicle {
  const Vehicle({required this.name, required this.mileage});
  final String name;
  final int mileage;

  Vehicle withMileage(int value) {
    return Vehicle(name: name, mileage: value);
  }
}

void main() {
  final car = Vehicle(name: 'Family car', mileage: 64820);
  final updated = car.withMileage(64920);
  print('${updated.name}: ${updated.mileage}');
  print(car.mileage);
}

Starten / prüfen

dart run models.dart

02Objekte erzeugen

required this.name ist eine Kurzform für einen benannten Parameter, der direkt das gleichnamige Feld füllt. Der Aufruf Vehicle(name: ..., mileage: ...) erzeugt ein Objekt. car.name liest anschließend dessen Name.

03Änderungen bewusst modellieren

withMileage erzeugt ein neues Vehicle. Das alte Objekt bleibt unverändert. Ein solcher Stil vereinfacht nachvollziehbare Zustandswechsel. Die echte App ergänzt IDs, Zeitstempel und weitere Felder. Dieses Beispiel zeigt nur den Grundgedanken.

Erwartetes Ergebnis

Ausgabe: Family car: 64920. Danach bleibt das alte Objekt bei 64820.

Deine Übung

Ergänze ein optionales Feld plate und erhalte es auch in withMileage.

Lösung mit Erklärung anzeigen

Deklariere final String? plate, ergänze this.plate im Konstruktor und übergebe plate: plate beim Erzeugen des neuen Vehicle. Das Fragezeichen erlaubt ein fehlendes Kennzeichen.

Projektbezug und Quellen

Das Beispiel ist zum Lernen vereinfacht. Die verlinkte Codeversion zeigt die Anwendung im Projekt und die dortigen Prüfungen.