3.8. Orientação à Objetos em Dart: extension

3.8. Orientação à Objetos em Dart: extension

Extensions é a forma de adicionar métodos dentro de classes já existentes, vejamos:

void main() {
  String nome = 'Flutter';
  print(ola(nome));
}

String ola(String nome) {
  return "Olá $nome!";
}

No exemplo acima, se o executarmos, irá debugar Olá Flutter!, porém podemos utilizar o extension dessa forma:

void main() {
  String nome = 'Flutter';
  print(nome.ola());
}

extension Ola on String{
  String ola() {
    return 'Olá $this!';
  }
}

Assim, basta eu instanciar a extension que acabei de criar e pronto, irá realizar a mesma coisa. 

Da mesma forma, você consegue adicionar uma funcionalidade, seja qualquer uma, a uma classe existente, independe de onde.