title: Dart Named constructor vs Static method what to prefer?
body: <p>So after <code>dart</code> made <code>new</code> keyword optional,</p>
  
  <p>we can initialize an object with <strong><em>exact same syntax but different internal implementation</em></strong>. </p>
  
  <pre><code>class Color {
    int r = 0, g = 0, b = 0;
  
    Color({this.r, this.b, this.g});
  
    //Named constructors
    Color.red() //Implementation
  
    Color.cyan() //Implementation
  
    // Static Initializers
    static Color red() =&gt; //Initialze with parameter
  
    static Color cyan() =&gt; //Initialze with parameter
  }
  </code></pre>
  
  <p>We can use them like this <strong>regardless</strong> of being it a <code>named constructor</code> or <code>static method</code>: </p>
  
  <pre><code>Color red = Color.red();
  Color cyan = Color.cyan();
  </code></pre>
  
  <p>What is the place to use each of them?</p>