Variáveis em Dart e uso básico do null safety
No Dart temos duas maneiras básicas para inicializar uma variável. Se escolhermos usufruir do null safety, precisaremos colocar um question-mark (?) logo após o tipo declarado, o que adiciona a possibilidade da variável receber um valor null.
String? nome;
nome = 'Afonso';
print(nome); // Retorno: Afonso
int? idade;
print(idade); // Retorno: null
Toda variável tem um tipo anulável, inclusive as classes que criamos.
...
MyObject? obj;
obj = MyObject('Objeto');
print(obj.name); // Retorno: Objeto
...
class MyObject {
String name;
MyObject(this.name);
}
Observação: Basicamente tudo no Dart são objetos, inclusive números como a classe
int
Ponto importante
Se o null safety estiver ativo, será necessário iniciar a variável antes de utilizá-la.
...
MyObject? obj;
print(obj.name); // Retorno: Error: Property 'name' cannot be accessed on 'MyObject?' because it is potentially null.
...
class MyObject {
String name;
MyObject(this.name);
}
No entanto …
O analisador do Dart consegue identificar em vários momentos se a variável em questão foi iniciada antes de ser utilizada ou não. Tornando possíveis as situações como a abaixo:
String endereco;
endereco = "Rua das Oliveiras";
print(endereco);
Nos momentos onde o analisador não consegue verificar se a variável estará atribuída com algum valor válido (não nulo), mas nós temos certeza de que naquele momento ela já estará iniciada, precisamos colocar um exclamation mark (!).
String mensagem = "Seja bem vindo " + user!.name;
print(mensagem); // Retorno: Seja bem vindo fulano
PS: O TabNews ainda não identifica a linguagem Dart. Estou utilizando JS para as linhas de código.