O Google liberou o Dart 2.1. Essa versão traz novas funcionalidades na linguagem, melhorias de performance, checagem de tipos mais rápida e melhor usabilidade para erros de tipos.
O Dart 2, liberado no início do ano, adicionou suporte ao compilador para geração de código para dispositivos móveis, ferramentas da plataforma web retrabalhadas e o sound type system (também conhecido como type safe system) para ajudar as equipes na construção de apps complexas.
O sound type system ajuda os usuários durante o desenvolvimento, informando quando um desenvolvedor viola um contrato especificado por tipos. Agora no Dart 2.1, ambas as verificações de tipos em tempo de edição e em tempo de compilação estão completas.
O Dart 2.1 melhorou o suporte aos mixins. Mixins são uma funcionalidade que permite aos desenvolvedores reutilizar o código de uma classe em várias hierarquias de classes. Uma nova sintaxe para mixins foi adicionada, a palavra chave mixin
pode ser usada na definição de classes para serem somente usadas como mixins. É importante observar que a nova sintaxe mixin
impede que os desenvolvedores estendam ou construam uma classe mixin.
Agora os mixins podem estender outras classes (anteriormente só era possível estender Object
) e invocar métodos de suas superclasses. Um exemplo de extensão é o das APIs de animação do Flutter, na qual o SingleTickerProviderStateMixin declara um mixin que implementa a interface TickerProvider.
mixin SingleTickerProviderStateMixin on State implements TickerProvider {
...
}
A nova sintaxe mixin
é necessária para os desenvolvedores que desejam usar super
dentro de um mixin.
class Superclass {
superclassMethod() {
print("in superclass");
}
}
mixin SomeMixin on Superclass {
mixinMethod() {
// This is OK:
super.superclassMethod();
}
}
class GoodSub extends Superclass with SomeMixin {}
class BadSub extends Object with SomeMixin {}
// Error: Since the super() call in mixinMethod() can't find a
// superclassMethod() to call, this is prohibited.
O Dart 2.1 agora infere onde um int pode ser usado como um double, um problema comum para os desenvolvedores Flutter ao usar um tipo int em que a API espera um tipo double.
(Imagem obtida de medium.com/dartlang)
Os desenvolvedores Flutter e web podem tirar proveito das melhorias de performance. O custo da checagem de tipos foi reduzido no Dart 2.1, para ambos o código compilado AOT e para código sendo executado na VM com a compilação JIT. De acordo com o Google, a execução de uma análise de código de um grande aplicativo de referência que costumava levar 41 segundos, agora leva 25 segundos. Além disso, o arquivo dart2js minificado teve uma redução de tamanha de 17%, e a compilação está 15% mais rápida.
O Dart 2.1 agora é oficialmente suportado pelos protocol buffers. Os protocol buffers são um mecanismo neutro de plataforma e neutro de linguagem para serializar dados estruturados, as linguagens suportadas são Java, Python, Objective-C, C++, Dart, Go, Ruby e C#. Mais informações sobre protocol buffers podem ser encontradas na documentação de referência.
Outras funcionalidades disponíveis são:
- Adição de construtores HashMap.fromEntries e LinkedHashmap.fromEntries;
- Adição de operadores /, | e ^ para booleanos;
- Adição de novos códigos de status HTTP;
- Adição de flag -O para ajustar os níveis de otimização.
A lista completa de funcionalidades, correções de bugs e mudanças que quebram a compatibilidade podem ser encontradas no changelog.
O Dart SDK 2.1 está disponível para download na homepage do Dart. Para desenvolvedores Flutter, o Dart 2.1 faz parte da versão 1.0 do Flutter. O Google também disponibilizou alguns exemplos de int-to-double e mixins.