Quantas vezes você gostaria de ter um novo método em uma classe padrão? Certamente não foram poucas e se já estiver a algum tempo trabalhando com Flutter/Dart. Helpers como também pode ser chamada em outras linguagens de programação, são implementações relativamente novas entre as linguagens e se propõe ir além da estrutura original desenhada pelo autor da classe.

Dart introduziu “extension” no ano passado (2019) e seu uso vem sendo ampliado pelos criadores de “package” como é o exemplo do pacote “Provider” que estendeu o BuildContext para incluír métodos read, watch, select como mecanismo para obter ou escutar alteração nos valores armazenados nas classes gerenciadas pelo “Provider”.

Anatomia de “extension” – a simplicidade

extension [novo nome] on [classe] {
}

Neste ponto os métodos que forem implementados na nova classe ira estender a referência a classe original, talvez fique mais claro com alguns exemplos.

extension StringExtension on String{ 
   int parseInt()=>int.parse(this);
}

A classe “StringExtension” agora estende a classe “String” para incluír o método “parseInt()” que converte uma string em int:

  var texto = '123';
  /// converte para int
  int  i =  texto.parseInt();
  print(i);