Tutorial: Como Usar Extensions no Flutter
O que são Extensions no Dart?
As Extensions, introduzidas no Dart 2.7, permitem adicionar funcionalidades a classes existentes sem precisar modificá-las diretamente. Isso é útil para estender o comportamento de classes externas ou integrar novas funcionalidades em seu código.
Por que usar Extensions?
Extensions ajudam a manter o código limpo e reutilizável. Alguns casos de uso incluem:
- Adicionar métodos de conveniência a classes padrão.
- Evitar duplicação de código ao reutilizar lógica em vários lugares.
- Aumentar a legibilidade do código.
Exemplo Básico
Vamos criar uma extensão para a classe String que adiciona um método para capitalizar a primeira letra de um texto:
extension StringExtensions on String {
String capitalize() {
if (this.isEmpty) return this;
return this[0].toUpperCase() + this.substring(1);
}
}
void main() {
String texto = "flutter é incrível!";
print(texto.capitalize()); // Output: Flutter é incrível!
}
Como funciona?
No exemplo acima:
- extension StringExtensions on String: Define uma extensão para a classe
String. - capitalize: Adiciona um novo método que pode ser chamado em qualquer objeto do tipo
String.
Extensions com Tipos Genéricos
Extensions também podem ser usadas com tipos genéricos. Vamos criar uma extensão para listas que retorna os elementos duplicados:
extension ListExtensions on List {
List duplicates() {
return this.toSet().where((item) => this.where((x) => x == item).length > 1).toList();
}
}
void main() {
List numeros = [1, 2, 3, 2, 4, 1];
print(numeros.duplicates()); // Output: [1, 2]
}
Limitando o Escopo de Extensions
Nem todas as extensions precisam estar disponíveis globalmente. Você pode colocá-las em arquivos separados e importar apenas quando necessário:
// Arquivo string_extensions.dart
extension StringExtensions on String {
String reverse() {
return split('').reversed.join();
}
}
// Arquivo principal
import 'string_extensions.dart';
void main() {
String texto = "Dart";
print(texto.reverse()); // Output: traD
}
Boas Práticas
- Mantenha as extensions simples e específicas.
- Evite adicionar métodos que possam causar confusão ou conflito com métodos existentes.
- Documente bem as extensions para facilitar o uso por outros desenvolvedores.
Conclusão
As Extensions são uma ferramenta poderosa no Dart que permitem estender funcionalidades de forma elegante e eficiente. Elas ajudam a escrever código mais limpo, reutilizável e fácil de manter.



Publicar comentário