Escreva um StatefulWidget
Parte da seção Tornando o app interativo do Journey de Flutter da Coddy. Lição 12 de 34.
Desta vez, você vai escrever o StatefulWidget. A tela exibe I feel Sleepy, e tocar em Drink coffee deve mudar o texto para I feel Awake. Como um StatelessWidget, isso nunca será possível.
Transformar um StatelessWidget em um StatefulWidget envolve três etapas:
- Troque
extends StatelessWidgetporextends StatefulWidgete substitua obuildporcreateState. - Escreva a classe
Stateabaixo dele e movabuildpara lá, sem alterações. - Mova a variável que muda para fora de
build, para o início da 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) {
...
}
}A etapa 3 é importante. Uma variável no início de build é criada novamente toda vez que build é executado, então, depois de setState, ela voltaria a ser 'Sleepy'. No início da classe State, ela é criada uma vez e mantém o valor que você atribui a ela.
Desafio
MédioTransforme HomePage em um StatefulWidget com uma classe _HomePageState. Mantenha o humor em String _mood = 'Sleepy'; no início do State e faça com que Drink coffee o altere para 'Awake' com setState.
Experimente você mesmo
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'),
),
],
),
),
);
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Tornando o app interativo
1Botões
Seu primeiro botãoImprimir no consoleBotões de texto e contornoBotões com íconesO botão de ação flutuante7Interruptores e controles deslizantes
Ligar e desligar com um interruptorMarcar uma caixa de seleçãoEscolher um valor com um controle deslizante3Widgets com Estado
Uma classe de Widget própriaExiba uma SnackBarsetState redesenha a telaEscreva um StatefulWidgetUm contador para cima e para baixoO Hot Reload mantém o estadoPratique por conta própria: Compilador de Flutter online