Ein StatefulWidget schreiben
Teil des Abschnitts Apps interaktiv gestalten der Flutter-Journey von Coddy. Lektion 12 von 34.
Dieses Mal schreibst du das StatefulWidget selbst. Auf dem Bildschirm steht I feel Sleepy, und durch Drücken von Kaffee trinken sollte sich die Anzeige zu I feel Awake ändern. Als StatelessWidget kann es das nie.
Ein StatelessWidget in ein StatefulWidget umzuwandeln, umfasst drei Schritte:
- Ändere
extends StatelessWidgetzuextends StatefulWidgetund ersetze dessenbuilddurchcreateState. - Schreibe darunter die
State-Klasse und verschiebebuildunverändert dorthin. - Verschiebe die veränderliche Variable aus
buildan den Anfang derState-Klasse.
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _mood = 'Sleepy';
@override
Widget build(BuildContext context) {
...
}
}Schritt 3 ist wichtig. Eine Variable am Anfang von build wird jedes Mal neu erstellt, wenn build ausgeführt wird. Nach setState wäre ihr Wert also wieder 'Sleepy'. Am Anfang der State-Klasse wird sie einmal erstellt und behält den Wert, den du ihr zuweist.
Aufgabe
MittelWandle HomePage in ein StatefulWidget mit einer Klasse _HomePageState um. Bewahre die Stimmung ganz oben im State in String _mood = 'Sleepy'; auf und lasse Drink coffee sie mit setState in 'Awake' ändern.
Probier es selbst
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
String mood = 'Sleepy';
return Scaffold(
appBar: AppBar(title: Text('Mood')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('I feel $mood', style: TextStyle(fontSize: 32)),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {},
child: Text('Drink coffee'),
),
],
),
),
);
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Apps interaktiv gestalten
1Schaltflächen
Deine erste SchaltflächeIn der Konsole ausgebenText- und umrandete SchaltflächenSymbol-SchaltflächenDer Floating Action Button7Schalter und Schieberegler
Ein und aus mit einem SchalterEin Kästchen ankreuzenEinen Wert mit einem Schieberegler auswählen3Widgets mit Zustand
Eine eigene Widget-KlasseEine SnackBar anzeigensetState zeichnet den Bildschirm neuEin StatefulWidget schreibenEinen Zähler hoch- und herunterzählenHot Reload behält den ZustandÜbe selbstständig: Online-Flutter-Compiler