Ir al contenido

Guía de Flutter para novatos - Miguel Páramos

FAQ sobre Flutter pal que no tiene ni idea de Flutter | 2º DAM · PMDM

Por qué los constructores en Flutter suelen ser de una sola línea y sin ámbito { }

A quienes vienen de lenguajes tradicionales de Programación Orientada a Objetos les suele llamar la atención que los constructores de widgets en Flutter suelan reducirse a una sola línea terminada en punto y coma, sin un bloque de cuerpo { ... } donde ejecutar lógica imperativa.

En Flutter, esta sintaxis concisa de una sola línea es el estándar y la forma más idiomática de construir widgets.

Al igual que ocurre en lenguajes como Kotlin con los Primary Constructors (class Persona(val nombre: String)), en Dart los constructores de widgets responden a principios muy concretos:

  1. Los widgets no son objetos de negocio pesados; son planos o recetas declarativas. Su única responsabilidad es recibir parámetros y ponerlos a disposición del método build.

  2. Dart cuenta con la sintaxis de inicialización de parámetros formales (this.propiedad y super.propiedad), que asigna los valores a los campos finales de la clase automáticamente sin requerir código manual en el cuerpo del constructor:

    const MiBoton({super.key, required this.titulo}); // Asigna automáticamente el argumento al campo final 'titulo'
  3. Si fuese necesario realizar validaciones previas a la creación del objeto, en lugar de un cuerpo imperativo { } se utiliza la lista de inicialización mediante : assert(...):

    const MiBarra({super.key, required this.altura}) // Constructor con parámetro formal nombrado
    : assert(altura > 0, 'La altura debe ser positiva'); // Lista de inicialización: valida la condición antes de crear el objeto