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.