Generic method syntax

List<T>

T

Object

x is T

T

Convenience features

1.21 also introduces a couple of = to specify a default value for a named argument.



enableFlags({bool hidden: false}) { … }



can now be replaced by



enableFlags({bool hidden = false}) { … }



We’re also introducing x is now in scope in the initializer list such that we can use it to initialize y in this example:



class C {

var x, y;

C(this.x): y = x;

}



As with any new language feature, it is critical for package authors to update pubspec.yaml with a latest SDK version.



name: my_cool_dart_package

environment:

sdk: '>=1.21.0 <2.0.0'



This ensures users on older SDKs aren't broken when they update their packages.



For more details on these and other changes in 1.21, see the full 1.21 also introduces a couple of much requested convenience features. You can now useto specify a default value for a named argument.can now be replaced byWe’re also introducing access to initializing formal s, e.g.,is now in scope in the initializer list such that we can use it to initializein this example:As with any new language feature, it is critical for package authors to updatewith a latest SDK version.This ensures users on older SDKs aren't broken when they update their packages.For more details on these and other changes in 1.21, see the full changelog . Otherwise, download the latest release , and let us know what you think!





Dart 1.21 is now available. It introduces support for generic method syntax along with a few popular convenience features. Get it now! Until now, Dart's generic support was limited to classes, such as. Dart 1.21 introduces syntax allowing type arguments on methods and functions.Note the return type,. This enables call sites to preserve type information from arguments. Try to write the same function without a type argument, and you'll see that the return type must be– there is no other way we can make it work on all lists. For more examples, check out the Using Generic Methods article . For even more details, the informal specification is the place to go.We've had generic methods and functions for a while in strong mode . 1.21 introduces support for generic method syntax even without strong mode. Libraries can use this feature and work in both contexts, providing a stepping stone to full generic methods in all Dart code.However, this feature does not yet provide full runtime support for generic methods outside DDC. In particular,(i.e., they have no representation at runtime). Libraries must avoid constructs where the runtime value of type arguments matters, in order to work in both modes. For example,will not work outside strong mode ifis a method type argument. The analyzer marks such cases as errors, so you'll have tool support to avoid them. (Note: If you are using IntelliJ, support is available in WebStorm 2016.3.2 RC IntelliJ IDEA 2016.3.1 RC , and later.)