I want to use named parameters in Dart for clarity. How should I handle them? : <p>TL;DR: Named parameters are optional as a result of <a href="https://github.com/dart-lang/sdk/issues/4188" rel="noreferrer">a conscious design choice</a>. Short of having official language support, is there any way to enforce (and inform) required named arguments?</p>

<hr>

<p>I find it extremely useful to use named parameters when defining a class. Take, for instance, an <code>Ability</code> in an MMORPG:</p>

<pre><code>class Ability {

  final name;
  final effectDuration;
  final recast;            // wait time until next use
  // ...
}
</code></pre>

<p><code>effectDuration</code> and <code>recast</code> both carry the same type of information (i.e. duration of time) and are likely represented by the same datatype. It is easy to mix up which number goes where. However, they are both information vital to the correctness of the object, so they can't be missing during instantiation.</p>

<p>I could just break the program via a try-catch to enforce the requirement of those parameters, but that doesn't sound like fun for someone who uses the class and has no idea (short of reading the docs and understanding intuitively what the class does) that they are required.</p>

<p>Is there any way to enforce the requirement of certain named parameters while managing to inform the caller of said requirement and/or help them use it correctly?</p>
