Dart 3 Records

Tempo de leitura: 2 minutes

O Dart 3 introduziu alguns novos recursos interessantes, incluindo padrões, registros e modificadores de classe. Vamos dar uma olhada nos registros.

O que é Registro (Records)?

Imagine um cenário em que você foi retornar vários valores de uma função. Por exemplo, você deseja retornar as informações do aluno de uma função apenas nome e idade, você tem poucas opções. Empacote em lista, mapa ou classe de dados para manter os valores.

 

Map

Map<String,dynamic> getStudentInformation(){
  return {'name':'Alex','age':24}
}

 

Class

class StudentInfo{
final String name;
final int age;
  
  /// constructor... 
}

StudentInfo getStudentInformation(){
  return StudentInfo(name:'Alex',age:24);
}

Vamos ver os possíveis problemas com as abordagens acima:

  1. Map Não é possível garantir todos os valores presentes e nem um tipo seguro.
  2. Criar uma classe de dados para retornar apenas um valor de uma função pode ser um pouco excessivo e detalhado.

 

Como os Records funcionam no dart 3?

Com Records, você pode retornar vários valores de uma função. Vamos ver com exemplo de código

(String,int) getStudentInfo(){
  return ('Alex',24);
}

Você pode acessar esses valores por meio de index.

final studentInfo = getStudentInfo();
final name = studentInfo.$1;
final age = studentInfo.$2;

O código carece de legibilidade, pois não está claro qual valor corresponde a quê, tornando-o problemático.

Aí vem a desestruturação e retorno de valores nomeados para resolver esse problema.

 

Desestruturando

Com a desestruturação, agora você pode extrair valores de retorno em variáveis separadas.

final (name,age) = getStudentInfo();
print(name);
print(age);

 

Valores nomeados

Como o nome indica, você pode acessar através da nomenclatura do valor.

({String name,int age}) getStudentInfo(){
  return (name:'Alex',age:'24');
}


  final stu= getStudentInfo();
  print(stu.name);
  print(stu.age);

 

Neste artigo, fizemos uma abordagem prática sobre registros em Dart. Vimos como criar registros, como acessar os campos em um registro e como usar registros em funções.

Isso é tudo para estes artigos. Espero que seja útil para todos.