Menu
CoddyTech

Mostrar y ocultar un widget

Parte de la sección Cómo hacerla interactiva del Journey de Flutter de Coddy. Lección 20 de 34.

Para mostrar un widget solo a veces, pon un if delante, justo dentro de la lista de children:

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

Cuando _showHint es false, la pista no está oculta: no está en la lista en absoluto, y los widgets que vienen después suben para ocupar el espacio. Cuando es true, la pista está ahí. Este if no lleva llaves ni else: es la versión de if para listas, como el for que usaste para crear una lista de widgets.

Un botón que muestra y oculta algo suele invertir un valor booleano con ! y cambiar su propia etiqueta con ? :.

challenge icon

Desafío

Fácil

La respuesta Paris siempre está en pantalla. Muéstrala solo cuando _showAnswer sea true. El botón ya cambia el valor de _showAnswer; haz que su etiqueta diga Show answer cuando la respuesta esté oculta y Hide answer cuando esté visible.

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Cómo hacerla interactiva

Practica por tu cuenta: Compilador de Flutter online