Los Redirecting Constructors en Dart permiten redirigir la creación de una instancia de un constructor a otro constructor dentro de la misma clase. Esta técnica simplifica el código cuando se tienen múltiples constructores que deben inicializarse de la misma manera o que necesitan añadir opciones de inicialización sin duplicar código.
Un Redirecting Constructor es un constructor que, en lugar de inicializar directamente los valores de la clase, redirige la creación de la instancia a otro constructor de la misma clase. Esto se logra usando el operador : this(...)
después de la lista de parámetros del constructor redirigido.
Los Redirecting Constructors son útiles para:
En este ejemplo, la clase Persona
tiene un constructor principal que recibe un nombre y una edad, mientras que un segundo constructor recibe solo el nombre y redirige al principal, estableciendo una edad predeterminada:
class Persona {
String nombre;
int edad;
// Constructor principal
Persona(this.nombre, this.edad);
// Redirecting constructor
Persona.joven(this.nombre) : this(nombre, 18);
}
void main() {
var persona1 = Persona('Ana', 25);
var persona2 = Persona.joven('Luis');
print('${persona1.nombre}, ${persona1.edad}'); // Salida: Ana, 25
print('${persona2.nombre}, ${persona2.edad}'); // Salida: Luis, 18
}
Aquí, el constructor Persona.joven
redirige al constructor principal Persona(nombre, edad)
con una edad predefinida de 18 años.
En el siguiente ejemplo, se muestra cómo redirigir a un constructor con valores predeterminados. Aquí se define un constructor adicional con parámetros predeterminados:
class Rectangulo {
int ancho;
int alto;
// Constructor principal
Rectangulo(this.ancho, this.alto);
// Redirecting constructor
Rectangulo.cuadrado(int lado) : this(lado, lado);
}
void main() {
var rectangulo = Rectangulo(5, 10);
var cuadrado = Rectangulo.cuadrado(4);
print('Rectángulo: ancho=${rectangulo.ancho}, alto=${rectangulo.alto}');
print('Cuadrado: ancho=${cuadrado.ancho}, alto=${cuadrado.alto}');
}
En este caso, Rectangulo.cuadrado
redirige al constructor principal Rectangulo(ancho, alto)
utilizando el mismo valor para el ancho y el alto, creando un cuadrado.
Para más información sobre Redirecting Constructors en Dart, consulta la documentación oficial de Dart.
Jorge García
Fullstack developer