<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ dart - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ dart - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Thu, 25 Jun 2026 09:38:54 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/dart/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Constructores en Dart: Casos de uso y ejemplos ]]>
                </title>
                <description>
                    <![CDATA[ La mayoría de nosotros estamos familiarizados con el concepto de constructores. Nos permiten crear diferentes instancias de nuestras clases. Podemos especificar de qué parámetros debe depender la clase cuando se crea una instancia y ocultar la lógica de inicialización interna. Podemos tener muchos constructores para diferentes casos de uso, o ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/constructores-en-dart-casos-de-uso-y-ejemplos/</link>
                <guid isPermaLink="false">644a3512db9a5007c084a721</guid>
                
                    <category>
                        <![CDATA[ dart ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ BlackeyeB ]]>
                </dc:creator>
                <pubDate>Fri, 05 May 2023 00:59:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/04/60591ab5687d62084bf6a7c6.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/constructors-in-dart/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Constructors in Dart – Use Cases and Examples</a>
      </p><p>La mayoría de nosotros estamos familiarizados con el concepto de constructores. Nos permiten crear diferentes instancias de nuestras clases. Podemos especificar de qué parámetros debe depender la clase cuando se crea una instancia y ocultar la lógica de inicialización interna.</p><p>Podemos tener muchos constructores para diferentes casos de uso, o podemos confiar en el predeterminado.</p><p>En dart, los constructores juegan un papel similar, pero tienen algunas variaciones que no existen en la mayoría de los lenguajes de programación. Este artículo repasa los diferentes casos de uso y ejemplos de constructores.</p><p>En todos los ejemplos de este artículo, usaremos la siguiente clase:</p><pre><code class="language-dart">class Coche {
   String fabricacion;
   String modelo;
   String anyoFabricacion;
   bool tieneABS;
}</code></pre><h2 id="c-mo-empezar-con-los-constructores-en-dart"><strong>Cómo empezar con los constructores en Dart</strong></h2><p>Si no especificas ningún constructor en Dart, crearás un constructor predeterminado.</p><p>Esto no significa que verás un constructor predeterminado generado en su clase. En cambio, al crear una nueva instancia de tu clase, se llamará a este constructor. No tendrá argumentos y llamará al constructor de la superclase, sin argumentos también.</p><p>Para declarar un constructor en tu clase, puedes hacer lo siguiente:</p><pre><code class="language-dart">class Coche {
	String fabricacion;
   	String modelo;
   	String anyoFabricacion;
   	bool tieneABS;
   
   	Coche(String fabricacion, String modelo, int anyo, bool tieneABS) {
    	this.fabricacion = fabricacion;
      	this.modelo = modelo;
      	this.anyoFabricacion = anyo;
      	this.tieneABS = tieneABS;
   	}
}</code></pre><p>Como puedes imaginar, debe haber una mejor manera de inicializar nuestros campos de clase, y en Dart, la hay:</p><pre><code class="language-dart">class Coche {
	String fabricacion;
   	String modelo;
   	String anyoFabricacion;
   	bool tieneABS;
   
   	Coche(this.fabricacion, this.modelo, this.anyoFabricacion, this.tieneABS);
}</code></pre><p>La forma que usamos arriba es una sintaxis sencilla que Dart tiene para simplificar la asignación.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-321.png" class="kg-image" alt="image-321" width="600" height="400" loading="lazy"><figcaption>Photo by <a href="https://unsplash.com/@lin_alessio?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Alessio Lin</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Unsplash</a></figcaption></figure><h2 id="funciones-de-constructor-m-s-complejas">F<strong>unciones de constructor más complejas</strong></h2><p>En otros idiomas, es posible sobrecargar tu constructor. Esto significa que puedes tener diferentes constructores con el mismo nombre, pero con una firma diferente (o un conjunto diferente de argumentos).</p><h3 id="constructores-con-nombre-en-dart"><strong>Constructores con nombre en Dart</strong></h3><p>En Dart, esto no es posible, pero hay una forma de hacer algo semejante. Se llama <strong><strong>constructores </strong>con nombre</strong>. Dar a tus constructores diferentes nombres le permite a tu clase tener muchos constructores y también representar mejor sus casos de uso fuera de la clase.</p><figure class="kg-card kg-code-card"><pre><code class="language-dart">class Coche {
	String fabricacion;
   	String modelo;
   	String anyoFabricacion;
   	bool tieneABS;
   
   	Coche(this.fabricacion, this.modelo, this.anyoFabricacion, this.tieneABS);
   
   	Coche.sinABS(this.fabricacion, this.modelo, this.anyoFabricacion): tieneABS = false;
}</code></pre><figcaption>Ejemplo de constructor con nombre</figcaption></figure><p>El constructor <strong><strong>sinABS</strong></strong> inicializa la variable de instancia tieneABS en falso, antes de que se ejecute el cuerpo del constructor. Esto se conoce como <strong><strong>lista de inicializadores</strong></strong> y puede inicializar varias variables, separadas por una coma.</p><p>El caso de uso más común para las listas de inicializadores es inicializar los campos finales declarados por tu clase.</p><blockquote>✋ Cualquier cosa que se coloque en el lado derecho de los dos puntos (:) no tiene acceso a <strong>this</strong>.</blockquote><h3 id="constructores-de-factor-as-en-dart"><strong>Constructores de Factorías en Dart</strong></h3><p>Un constructor de factoría es un constructor que se puede usar cuando no necesariamente deseas que un constructor cree una nueva instancia de tu clase.</p><p>Esto podría ser útil si tienes instancias de tu clase en la memoria y no deseas crear una nueva cada vez (o si la operación de crear una instancia es costosa).</p><p>Otro caso de uso es si tienes cierta lógica en tu constructor para inicializar un campo final que no se puede hacer en la lista de inicializadores.</p><figure class="kg-card kg-code-card"><pre><code class="language-dart">class Coche {
	String fabricacion;
   	String modelo;
   	String anyoFabricacion;
   	bool tieneABS;
   
   	factory Coche.ford(String modelo, String anyoFabricacion, bool tieneABS) {
    	return CocheFord(modelo, anyoFabricacion, tieneABS);
    }
}

class CocheFord extends Coche {
	CocheFord(String modelo, String anyoFabricacion, bool tieneABS): super("Ford", modelo, anyoFabricacion, tieneABS);
 
}</code></pre><figcaption>Ejemplo de constructor de factoría</figcaption></figure><h2 id="constructores-avanzados-en-dart"><strong>Constructores avanzados en Dart</strong></h2><h3 id="constructores-de-constantes-y-constructores-de-redireccionamiento-en-dart"><strong>Constructores de constantes y constructores de redireccionamiento en Dart</strong></h3><p>Dart también te permite crear constructores de constantes. ¿Qué significa exactamente? Si tu clase representa un objeto que nunca cambiará después de su creación, puede beneficiarse del uso de un constructor de constante. Debes asegurarte de que todos los campos de tu clase sean definitivos.</p><figure class="kg-card kg-code-card"><pre><code class="language-dart">class FordFocus {
   static const FordFocus fordFocus = FordFocus("Ford", "Focus", "2013", true);
   
   final String fabricacion;
   final String modelo;
   final String anyoFabricacion;
   final bool tieneABS;
   
   const FordFocus(this.fabricacion, this.modelo, this.anyoFabricaion, this.tieneABS);
   
}</code></pre><figcaption>Ejemplo de constructor de constante</figcaption></figure><p>Cuando deseas que un constructor llame a otro constructor en segundo plano, se le denomina <strong><strong>constructores de redireccionamiento</strong></strong>.</p><figure class="kg-card kg-code-card"><pre><code class="language-dart">class Coche {
	String fabricacion;
   	String modelo;
   	String anyoFabricacion;
   	bool tieneABS;
   
   	Coche(this.fabricacion, this.modelo, this.anyoFabricacion, this.tieneABS);
   
   	Coche.sinABS(this.fabricacion, this.modelo, this.anyoFabricacion): this(fabricacion, modelo, anyoFabricacion, false);
}</code></pre><figcaption>Ejemplo de constructor de redirección</figcaption></figure><h2 id="para-acabar">Para acabar</h2><p>Cada uno de los constructores que discutimos tiene un propósito y un caso de uso diferente. Depende de ti determinar y comprender cuándo usar cada uno. Con suerte, este artículo te dio el conocimiento necesario para hacerlo.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
