Dart Kurs Weiter zu Apps bauen

Lektion 07 - Flutter Grundlagen

Wie Flutter funktioniert

Flutter ist der Schritt von Dart-Code zu grafischen Apps. Bevor du Counter, Buttons und Layouts baust, musst du verstehen, wie Flutter denkt: Alles ist ein Widget, UI wird aus Dart-Code gebaut, und Aenderungen passieren ueber State.

1. Was ist Flutter?

Flutter ist ein Framework fuer Apps mit grafischer Oberflaeche. Du schreibst Dart, Flutter erzeugt daraus sichtbare UI fuer Smartphone, Web oder Desktop.

void main() {
  runApp(const MyApp());
}

main() startet wie bei Dart-Konsolenprogrammen. runApp startet aber keine Konsole, sondern deine Flutter-Oberflaeche.

2. Der wichtigste Satz

In Flutter ist fast alles ein Widget: Text, Button, Abstand, Farbe, Layout, Seitenstruktur und sogar ganze Bildschirme.

MaterialApp(
  home: Scaffold(
    appBar: AppBar(title: Text('App')),
    body: Text('Hallo'),
  ),
)

3. Vergleich: JavaScript/Web und Flutter

Wenn du Web oder JavaScript kennst, kannst du Flutter besser einordnen. Flutter nutzt aber keine HTML-Tags und kein CSS. Die Oberflaeche entsteht direkt aus Widgets.

Web / JavaScriptFlutter / Dart
HTMLWidgets wie Text, Column, Button
CSSWidget-Properties wie color, padding, style
JavaScriptDart-Logik, Funktionen, Klassen, State
document.querySelectorDu greifst nicht direkt auf DOM-Elemente zu
addEventListeneronPressed, onTap oder andere Callback-Properties
DOM neu rendernsetState meldet Flutter: UI neu zeichnen

4. Styling in Flutter

In CSS schreibst du Regeln fuer Klassen oder Elemente. In Flutter gibst du Styling direkt an Widgets oder an Theme-Werte weiter.

CSS-Denken

.title {
  color: blue;
  font-size: 32px;
  padding: 16px;
}

Flutter-Denken

Padding(
  padding: EdgeInsets.all(16),
  child: Text(
    'Titel',
    style: TextStyle(
      color: Colors.blue,
      fontSize: 32,
    ),
  ),
)

Flutter trennt Layout und Styling nicht so stark wie HTML/CSS. Viele visuelle Werte sind Teil des Widget-Baums.

5. Die wichtigsten Flutter-Funktionen

FunktionBedeutung
main()Startpunkt des Dart-Programms
runApp(...)Startet die Flutter-App und zeigt das erste Widget
build(...)Beschreibt, wie ein Widget aussehen soll
setState(...)Aendert State und laesst Flutter die UI neu zeichnen
print(...)Gibt Debug-Text in der Konsole aus

6. StatelessWidget und StatefulWidget

Ein StatelessWidget zeigt UI ohne eigenen veraenderbaren Zustand. Ein StatefulWidget hat Werte, die sich aendern koennen, zum Beispiel einen Counter.

Stateless

class TitleText extends StatelessWidget {
  const TitleText({super.key});

  @override
  Widget build(BuildContext context) {
    return Text('Hallo');
  }
}

Stateful

class CounterPage extends StatefulWidget {
  const CounterPage({super.key});

  @override
  State<CounterPage> createState()
      => _CounterPageState();
}

Faustregel: Wenn sich Werte auf dem Bildschirm veraendern, brauchst du meistens State.

7. State und setState

State ist der aktuelle Zustand deiner App. Beim Counter ist das die Zahl. Wenn du den State veraenderst, muss Flutter erfahren, dass die UI neu gezeichnet werden soll.

int counter = 0;

void increase() {
  setState(() {
    counter = counter + 1;
  });
}
counter

Der aktuelle Zustand.

setState

Hier wird der Zustand geaendert.

Neu zeichnen

Flutter ruft danach wieder build auf.

8. Wichtige Commands

Diese Befehle brauchst du beim Arbeiten mit Dart und Flutter. Schreibe sie bewusst ins Terminal und lies die Ausgabe.

CommandWofuer?
dart --versionPrueft, ob Dart installiert ist
dart run datei.dartStartet eine Dart-Konsolendatei
flutter --versionZeigt die installierte Flutter-Version
flutter doctorPrueft, ob Flutter korrekt eingerichtet ist
flutter create projektnameLegt ein neues Flutter-Projekt an
cd projektnameWechselt in den Projektordner
flutter runStartet die App auf einem Geraet, Emulator oder im Browser
flutter pub getLaedt Projekt-Abhaengigkeiten aus pubspec.yaml
flutter analyzePrueft den Code auf typische Fehler

9. Projektstruktur verstehen

Nach flutter create entsteht ein Projektordner mit vielen Dateien. Am Anfang ist vor allem wichtig, wo dein Code liegt.

mein_projekt/
  lib/
    main.dart
  pubspec.yaml
  test/
  android/
  ios/
  web/
lib/main.dart

Hier startet dein App-Code.

pubspec.yaml

Hier stehen Name, Assets und Abhaengigkeiten.

android/ ios/ web/

Plattformordner fuer verschiedene Zielsysteme.

10. Mini-Uebungen

  1. Fuehre flutter doctor aus und notiere, was noch fehlt oder gruen ist.
  2. Lege mit flutter create flutter_counter ein Testprojekt an.
  3. Finde lib/main.dart und markiere main, runApp, build und setState.
  4. Schreibe auf, was in Flutter dem Web-Konzept HTML, CSS und JavaScript am ehesten entspricht.
  5. Aendere einen Text und eine Farbe im Startprojekt.
  6. Starte die App mit flutter run.
Weiter zu Apps bauen