Dart 3 modificador (interface)
- #Dart
- #Flutter
Olá pessoal, a partir do Dart 3 passamos a contar com o modificador “interface” acompanhado dos modificadores , final, Base e Sealed. Por não possuir o interface causava estranheza em desenvolvedores acostumados com outras linguagens e que começavam com o Dart/Flutter. Anteriormente, para alcançar um resultado semelhante ao uso de interfaces em C# ou Java, usávamos classes abstratas, usando modificador abstract como a seguir imagem 01.
Imagem 01 class abstrata
Vamos dar um look no modificador interface.
No Dart, o interface não funciona da mesma maneira que em Java como já mencionado, diferente de outras linguagens, onde uma interface é apenas um contrato no Dart, uma interface define uma classe que pode ser implementada e construída, mas não estendida fora da biblioteca.
Um erro é sinaliza se uma interface é empregada e o método não implementado, como ilustrado na imagem 02.
Imagem 02 interface
Porém, se o método é implementado, tudo está correto, como abaixo.
Imagem 03 interface
Para obter um resultado semelhante ao Java usando o modificador interface, é necessário adicionar o modificador abstract, que já era usado anteriormente sem o modificador interface, conforme mostrado na imagem 01.
Novamente destaco que uma interface não permite extends para fora de sua (biblioteca), imagem 04.
Imagem 04 extends fora da biblioteca
IDatasource pode ser instanciado linha 34 ou implementado linha 37 quando tenta estender um erro é gerado linha 46.
Em resumo, exploramos o novo modificador “interface” introduzido no Dart 3, com, final, Base e Sealed. Destacamos como a ausência do modificador interface no Dart causava estranheza em desenvolvedores, mas agora oferece uma forma mais clara de definir contratos de classes. Discutimos sua sintaxe e comportamento .
Os modificadores final, Base e Sealed, são muito interessantes e poderosos, falaremos sobre eles em um outro momento vlw ;)
Referências:
https://medium.com/brasilflutter/novos-modificadores-de-classe-no-dart-3-f1603557fbfc