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);