Menu
CoddyTech

Exibir e ocultar um widget

Parte da seção Tornando o app interativo do Journey de Flutter da Coddy. Lição 20 de 34.

Para exibir um widget apenas às vezes, coloque um if antes dele, diretamente dentro da lista de children:

Column(
  children: [
    const Text('Question'),
    if (_showHint) const Text('A hint'),
  ],
)

Quando _showHint é false, a dica não fica oculta: ela não está na lista, e os widgets que vêm depois dela sobem para preencher o espaço. Quando é true, a dica está lá. Esse if não tem chaves nem else: é a versão de if para listas, como o for que você usou para criar uma lista de widgets.

Um botão que mostra e oculta algo geralmente alterna um bool com ! e muda o próprio rótulo com ? :.

challenge icon

Desafio

Fácil

A resposta Paris está sempre na tela. Mostre-a somente quando _showAnswer for true. O botão já alterna _showAnswer; faça com que o rótulo seja Show answer quando a resposta estiver oculta e Hide answer quando ela estiver visível.

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: const HomePage(),
    );
  }
}

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

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool _showAnswer = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Quiz')),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            const Text('What is the capital of France?', style: TextStyle(fontSize: 20)),
            const Text('Paris', style: TextStyle(fontSize: 32)),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _showAnswer = !_showAnswer;
                });
              },
              child: const Text('Show answer'),
            ),
          ],
        ),
      ),
    );
  }
}
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Flutter online