Article image
Marcos Rangel
Marcos Rangel23/04/2024 00:18
Compartilhe

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.

image

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.

image

Imagem 02 interface

Porém, se o método é implementado, tudo está correto, como abaixo.

image

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.

image

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

https://dart.dev/language/class-modifiers

Compartilhe
Comentários (0)