Carlos Batista 2 years ago
carlosbatista.dev

Null-Safety no Dart

Se você está aprendendo Dart e ainda não compreendeu bem a questão do null-safety, eu acredito que com essa explicação ficará mais simples!

Null-Safety é uma maneira de controlar o que pode ser null e o que não pode ser.


Atenção


Se você quer permitir que uma variável receba um valor *null*, basta adicionar um "?" na frente da tipagem, como isto:


String? nome;


A variável nome inicia como *null* e também pode receber esse valor quando quiser, agora vamos usa-lá.



String? nome;
print(nome); 

// Output: null



Existe algumas expressôes que podemos usar, entre elas estão:

- ?? ( Recebe um valor do lado direito caso o esquerdo seja null )

- ! ( Afirma que uma variável que pode ser null não é contém null )

- ??= ( Atribui um valor a uma variável caso ela seja null )


Vamos aos exemplos, digamos que eu queira mostrar algo caso nome seja null, eu faria algo como:


String? nome;
print(nome ?? 'Nenhum nome foi informado');

// Output: Nenhum nome foi informado



E se eu quissese afirmar que a variável nome tem algum valor que é diferente de null?


String? nome;
print(nome!);

// Output: Uncaught TypeError: Cannot read properties of null (reading 'toString')Error: TypeError: Cannot read properties of null (reading 'toString')



Pois é! Daria um erro, isso porque nós mentimos, a variável nome era null mas nós afirmamos que não era, por isso que deu erro, o "!" é muito bom quando você quer dizer que tem certeza que uma variável não é null:


String? nome;

nome = "Carlos"; // Supondo que em algum momento eu fiz isso.

print(nome!);

// Output: Carlos



Mas e se eu quiser mudar a variável apenas se ela for null?

Simples:



String? nome;

nome ??= "Carlos";

print(nome);

// Output: Carlos



Viu como é simples?



Então você pode fazer isso com String, int, bool, e por ai vai...

Até em funções, veja exemplos:



// Não temos a chance de retornar um null aqui
String obterNome() {
  return "Nome";
}



Eu posso usar a função obterNome sem medo de receber um null


String? tentarObterNome() {
  final now = DateTime.now();
   
  if (now.day == 1) {
    return "Carlos";
  }
   
  return null;
}



Já aqui temos uma regra, o nome só será retornado caso seja dia um do mês.


---


É isso... espero que tenha ajudado o pessoal do Dart

1
377

FVM: Gerenciamento de Versões no Flutter

Flutter Version Management

1646920549.png
Carlos Batista
1 year ago
Flutter ou React Native: Qual Framework devo escolher?

Flutter ou React Native: Qual Framework devo escolher?

1724944350.webp
Deyv
2 years ago

#3 - Manipulando listas no Dart

Trabalhe com o método where de forma prática

1646920549.png
Carlos Batista
3 years ago
Pense como desenvolvedor!

Pense como desenvolvedor!

1646920549.png
Carlos Batista
2 years ago

Extensões do VS code que todo dev Flutter deve usar

1646920549.png
Carlos Batista
2 years ago