Napisz StatefulWidget
Część sekcji Dodajemy interaktywność ścieżki Flutter w Coddy. Lekcja 12 z 34.
Tym razem samodzielnie napiszesz StatefulWidget. Na ekranie widnieje tekst I feel Sleepy, a naciśnięcie przycisku Napij się kawy powinno zmienić go na I feel Awake. Jako StatelessWidget nigdy nie może tego zrobić.
Przekształcenie StatelessWidget w StatefulWidget wymaga trzech kroków:
- Zmień
extends StatelessWidgetnaextends StatefulWidgeti zastąp jegobuildprzezcreateState. - Napisz pod nim klasę
Statei przenieś tambuildbez zmian. - Przenieś zmienną, która ulega zmianie, z
buildna początek klasyState.
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) {
...
}
}Krok 3 ma znaczenie. Zmienna umieszczona na początku build jest tworzona ponownie za każdym razem, gdy uruchamia się build, więc po setState znów miałaby wartość 'Sleepy'. Na początku klasy State jest tworzona raz i zachowuje przypisaną jej wartość.
Wyzwanie
ŚredniZmień HomePage w StatefulWidget z klasą _HomePageState. Przechowuj nastrój w String _mood = 'Sleepy'; na początku stanu i spraw, aby Drink coffee zmieniało go na 'Awake' za pomocą setState.
Spróbuj swoich sił
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'),
),
],
),
),
);
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Dodajemy interaktywność
1Przyciski
Twój pierwszy przyciskWyświetlanie tekstu w konsoliPrzyciski tekstowe i konturowePrzyciski z ikonamiPływający przycisk akcji7Przełączniki i suwaki
Włączanie i wyłączanie przełącznikiemZaznacz pole wyboruWybierz wartość za pomocą suwaka3Widgety ze stanem
Własna klasa WidgetuWyświetl SnackBarsetState ponownie rysuje ekranNapisz StatefulWidgetLicznik w górę i w dółHot Reload zachowuje stanPoćwicz samodzielnie: Kompilator Flutter online