Dart Extension Methods na prática

A feature do Dart 2.7 que adiciona funcionalidade às bibliotecas existentes

Samuel Matias
iFood Tech
3 min readNov 26, 2020

--

Com a vinda do Dart 2.7, veio junto a ele uma feature muito interessante que nos ajuda bastante durante o desenvolvimento, que seria o Extension Methods. Basicamente ele é uma forma de adicionar funcionalidade às bibliotecas existentes.

Antes de darmos continuidade…

É importante lembrar que, para conseguir usar o Extension Methods, você precisa apontar para a versão do SDK 2.7 ou maior. Sim, existe lugares que falam para colocar o SDK 2.6 ou maior, mas segundo a documentação, é indicado colocar do SDK 2.7 ou maior. Então, abra o arquivo pubspec.yaml e atualize o sdk, dessa forma:

Feito isso, podemos seguir em frente.

Agora, vamos para um exemplo simples e prático do que é e como usar o Extension Methods.

Vamos implementar algo!

Imagine que você tem uma String e precisa colocar a primeira letra dessa String maiúscula e o resto minúscula.

Para resolver esse problema, você talvez faria algo do tipo:

Simples, certo? Agora, onde o Extension Methods entra nessa história? Com ele, podemos deixar esse código ainda melhor e bem mais intuitivo para quem for usar essa função no futuro, fazendo da seguinte maneira:

O uso da função capitalize parece mais intuitivo, certo? Sendo usado da mesma forma que usamos um .toUpperCase(), .toLowerCase() por exemplo, como se fosse realmente uma função da Classe String.

Caso queira executar esses códigos, aqui está o link do Exemplo 1 e Exemplo 2 no DartPad.

Ai você me pergunta, Extension Methods seria só isso? De forma básica, sim! Legal, né?

E o melhor de tudo, você não precisa fazer apenas para a Classe String, você consegue fazer para Classe Double, Int e até para suas Classes criadas no seu projeto de atuação.

E sim, dá pra usar em coisas do Flutter! Deixa eu te mostrar.

Extension Methods no Flutter

Como você deve estar pensando nesse momento, sim dá pra fazer muita coisa no Flutter usando Extension Methods! Vamos ver algumas :)

Na prática

Imagine que você tem uma tela e que nela existem dois textos. Cada texto desse tem um style diferente e também uma certa distância entre eles. Algo do tipo:

Certo, mas onde entra a possibilidade Extension Methods nesse exemplo?

Aqui, vamos criar dois Extension Methods! Uma para o TextStyle e outro para o Padding. Ele fica assim:

Você pode perceber que no Extension Methods do Text eu coloquei o nome TextExtensions, mas no do Padding, eu não coloquei. Sim, o nome não é obrigatório, mas é bom colocar, de forma que fique bem explicado ao que se referem essas Extension Methods.

Esse foi dois exemplos de vários tipos de Extension Methods que podem ser feitos no Flutter. Caso queira executar esses códigos, aqui está o link do Exemplo 3 e Exemplo 4 no DartPad.

Agora que falamos sobre o que é e como implementar o Extension Methods, precisamos falar de outro ponto bem importante que precisamos ter atenção com relação a ele.

Com grandes poderes vem grandes responsabilidades

Como assim? Não é só pegar, implementar os Extension Methods e ser feliz? Sim, mas lembre-se, use com moderação! Sim, usar ele vai facilitar, ajudar e até mesmo melhorar sua experiência de desenvolvimento (em alguns casos), mas tenha bom senso na hora de criar suas Extension Methods.

Minha dica seria, use para coisas simples e não coisas complexas! Use ponderadamente. Pois em alguns momentos, o uso excessivo dele pode vir a dificultar mais do que realmente facilitar, ajudar e melhorar sua experiência de desenvolvimento.

Aí talvez, agora você se pergunte: “Eita, com esses pontos destacados, será que posso/devo usar Extension Methods em produção?” Sim, você pode! Mas tenha em mente que não é pra usar em tudo! Apenas usamos em casos de preferência simples e que façam sentido.

Inclusive, usamos Extension Methods no app do iFood para Parceiros que é desenvolvido em Flutter — sim, temos um app no iFood que é desenvolvido em Flutter e eu contei todos os detalhes dessa escolha nesse artigo aqui!

Então, usem Extension Methods com Sabedoria!

Caso queiram saber ainda mais sobre Extension Methods e suas possibilidades, recomendo a leitura dessa documentação e assistir a esse vídeo.

Vlw galera, até a próxima 🙋🏾‍♂️ 🚀!

Quer receber conteúdos exclusivos criados pelos nossos times de tecnologia? Inscreva-se.

--

--