title: How specialize (override) class fields in Dart?
body: <p>I would like to <em>specialize fields</em> (override) when a <code>class</code> is <em>extended</em> or <em>implemented</em> in Dart 2.</p>
  
  <p>See the code:</p>
  
  <pre><code>abstract class Abase {
    String id;
    List&lt;Bbase&gt; bbases;
  }
  
  abstract class Bbase {
    String id;
  }
  
  class A implements Abase {
    String id;
    String name;
  
    List&lt;B&gt; bbases; // 'A.bbases=' ('(List&lt;B&gt;) → void') isn't a valid override of 'Abase.bbases=' ('(List&lt;Bbase&gt;) → void').
  }
  
  class B implements Bbase {
    String id;
  }
  </code></pre>
  
  <p><code>class Abase</code> has the generic field <code>List&lt;Bbase&gt; bbase</code> and in the <code>class A</code> I would like to specialize this field with <code>List&lt;B&gt; bbase</code>.</p>
  
  <p>But this is not possible. This error is presented on <code>analyzer</code> or <code>build_runner</code>:</p>
  
  <blockquote>
    <p>'A.bbases=' ('(List) → void') isn't a valid override of
    'Abase.bbases=' ('(List) → void').</p>
  </blockquote>
  
  <ol>
  <li>Is there a reason for does not accept this specialization of fields?</li>
  <li>Is there another way to specializate fields on <code>extends</code> or
  <code>implements</code>?</li>
  </ol>