Scrivi uno StatefulWidget
Fa parte della sezione Rendere l’app interattiva del percorso Flutter di Coddy. Lezione 12 di 34.
Questa volta scrivi tu il StatefulWidget. La schermata mostra I feel Sleepy e premendo Bevi un caffè dovrebbe cambiare in I feel Awake. Come StatelessWidget, non può farlo.
Per trasformare un StatelessWidget in un StatefulWidget servono tre passaggi:
- Modifica
extends StatelessWidgetinextends StatefulWidgete sostituisci il suobuildconcreateState. - Scrivi sotto di esso la classe
Statee spostacibuildsenza modificarlo. - Sposta la variabile che cambia fuori da
build, all'inizio della classeState.
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) {
...
}
}Il passaggio 3 è importante. Una variabile all'inizio di build viene creata di nuovo ogni volta che viene eseguito build, quindi dopo setState tornerebbe a 'Sleepy'. All'inizio della classe State viene creata una sola volta e conserva il valore che le assegni.
Sfida
MedioTrasforma HomePage in un StatefulWidget con una classe _HomePageState. Mantieni l’umore in String _mood = 'Sleepy'; all’inizio dello State e fai in modo che Drink coffee lo cambi in 'Awake' con setState.
Provalo tu
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'),
),
],
),
),
);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Rendere l’app interattiva
3Widget con stato
Una classe Widget tutta tuaMostra una SnackBarsetState ridisegna lo schermoScrivi uno StatefulWidgetUn contatore che sale e scendeHot Reload mantiene lo statoEsercitati da solo: Compilatore Flutter online