Flutter: Material — Widget Card

2025-01-01T18:00:00-05:00 | 3 minutos de lectura | Actualizado en 2025-01-24T07:42:46-05:00

jaimetellezb
Flutter: Material — Widget Card

Tabla de Contenido

Introducción

El widget de Card es uno de los más utilizados en Flutter. Las tarjetas muestran un contenedor con información de un tema en particular, imágenes, texto y acciones.

Widget Card

Las Cards son widgets que nos sirve para agrupar y mostrar información organizada dentro de un contenedor, que a su vez puede ser otro widget. Pueden tener esquinas redondeadas y una sombra de elevación.

Propiedades

  • elevated es la propiedad para especificar la elevación que tendrá la Card la cual genera una sombra debajo.
  • key identificador del widget dentro del árbol.
  • color propiedad para color de fondo de la Card.
  • shadowColor propiedad para color del sombreado.
  • surfaceTintColor este color se coloca sobre el color de la propiedad color .
  • shape propiedad para modificar los bordes de la Card.
  • margin propiedad para la margen de la Card.
  • clipBehavior el contenido se recortará según la configuración de la propiedad.
  • child propiedad para colocar el widget hijo de la Card.

Tipos de Cards

Existen tres tipos de Cards:

  • Elevated: Este tipo de Card muestra una elevación pronunciada.

    Card(
      color: Colors.amber,
      shadowColor: Colors.red,
      surfaceTintColor: Colors.red,
      elevation: 20,
      shape: BeveledRectangleBorder(),
      margin: EdgeInsets.all(30),
      child: SizedBox(
        width: 300,
        height: 100,
        child: Center(
          child: Text("Card con elevación y bordes cuadrados"),
        ),
      ),
    )
    

    elevated

  • Filled: Este tipo de Card tiene como característica principal su fondo más visible.

    Card.filled(
      color: Colors.green,
      child: SizedBox(
        width: 350,
        height: 150,
        child: Center(
          child: Text("Card con relleno"),
        ),
      ),
    )
    

    filled

  • Outlined: Este tipo de Card tiene un borde en línea que se puede notar.

    Card.outlined(
      color: Colors.white,
      child: SizedBox(
        width: 300,
        height: 100,
        child: Center(
          child: Text("Card con borde en línea"),
        ),
      ),
    )
    

    outlined

Ejemplo completo

import 'package:flutter/material.dart';

/// Clase Screen para widget card
class CardScreen extends StatelessWidget {
  const CardScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Card Screen'),
      ),
      body: Center(
        child: Column(
          children: [
            const Card(
              color: Colors.amber,
              shadowColor: Colors.red,
              surfaceTintColor: Colors.red,
              elevation: 20,
              shape: BeveledRectangleBorder(),
              margin: EdgeInsets.all(30),
              child: SizedBox(
                width: 300,
                height: 100,
                child: Center(
                  child: Text("Card con elevación y bordes cuadrados"),
                ),
              ),
            ),
            const Spacer(),
            const Card.filled(
              color: Colors.green,
              child: SizedBox(
                width: 350,
                height: 150,
                child: Center(
                  child: Text("Card con relleno"),
                ),
              ),
            ),
            const Spacer(),
            const Card.outlined(
              color: Colors.white,
              child: SizedBox(
                width: 300,
                height: 100,
                child: Center(
                  child: Text("Card con borde en línea"),
                ),
              ),
            ),
            const Spacer(),
            Card(
              child: Padding(
                padding: const EdgeInsets.all(10.0),
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    const Text(
                      "Dolore consequat incididunt aliquip sint Lorem occaecat velit incididunt ullamco fugiat magna nulla voluptate.",
                    ),
                    const Divider(),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.end,
                      children: [
                        TextButton(
                          onPressed: () {},
                          child: const Text("Cancel"),
                        ),
                        FilledButton(
                          onPressed: () {},
                          child: const Text("Aceptar"),
                        )
                      ],
                    )
                  ],
                ),
              ),
            ),
            const Spacer(),
          ],
        ),
      ),
    );
  }
}

demo

Consideraciones

  • Se recomienda usar las Cards para contener elementos relacionados.
  • Se puede incluir cualquier cosa dentro de las Cards, desde textos, botones, imágenes, etc. Además de otros widgets.
  • Son flexibles para el uso de componentes dentro de ellas.
  • Utilizarlas para información relevante y útil para el usuario.

Conclusión

En conclusión, las Cards son un widget muy importante y muy usado dentro de la comunidad, son fáciles de usar y se pueden usar casi en cualquier caso para brindar información al usuario final.

¡Gracias por leer!

Referencias

© 2022 - 2025 jaimetellezb - Compartir guías y tutoriales de programación.

🌱 Powered by Hugo with theme Dream.

Sobre mí

alt

Ingeniero de software

Hola, bienvenidos a mi blog sobre guías y tutoriales de programación.

Aquí podrás encontrar guías y tutoriales sobre algunos temas de tecnología en general. La idea es poder ayudar a que ciertas cosas como configuraciones de nuevas herramientas sean más fáciles de abordar y utilizar. También pequeños proyectos donde se usen diferentes tecnologías como ejemplo.

Enlaces sociales