Junior
O que é segurança nula (null safety) em Dart?
sobes.tech IA
Resposta da IA
A segurança nula é um sistema no Dart que ajuda a prevenir erros em tempo de execução relacionados com a desreferenciação de null. O compilador analisa o código e determina se uma variável pode conter um valor null. Se uma variável for declarada como não permitindo null, o compilador garante que ela nunca receberá null.
Principais aspetos da segurança nula:
- Tipo não nulo implícito: Por padrão, os tipos não permitem null (não nullable).
// int não pode ser null int count = 0; - Tipo que permite null: Para indicar explicitamente que uma variável pode ser null, usa-se o ponto de interrogação
?:// String? pode ser null String? name; - Operador
!(afirmação de não null): Usado para afirmar que uma expressão que permite null não é null. Deve ser usado com precaução, pois se for null, lança uma exceção.String? nullableName = 'Flutter'; // Usamos !, sabendo que nullableName não é null neste contexto print(nullableName!.length); - Operador
?(operadores seguros para null): Usado para aceder de forma segura a membros ou chamar métodos em expressões que permitem null.?.(acesso seguro para null):String? nullableString; // Se nullableString não for null, será chamado length, caso contrário, o resultado será null int? length = nullableString?.length;??(se null):String? serverName; // Se serverName não for null, usa o seu valor, caso contrário, 'Guest' String displayName = serverName ?? 'Guest';??=(atribuir se null):String? cache; // Se cache for null, atribui-lhe 'Loading...' cache ??= 'Loading...';
- Análise de fluxo: O compilador Dart analisa o código e determina quando uma variável que permite null não é null numa determinada parte do código, permitindo usá-la como não permitindo null.
String? greeting = getGreeting(); // O compilador sabe que greeting não é null após esta verificação if (greeting != null) { print(greeting.toUpperCase()); // Pode usar safely toUpperCase() }
Vantagens da segurança nula:
- Redução de erros: Previna NullReferenceException (ou similares) em tempo de execução.
- Melhor legibilidade: Indica explicitamente se uma variável pode ser null.
- Desempenho aumentado: O compilador pode fazer otimizações sabendo quais variáveis garantidamente não são null.
A segurança nula foi introduzida no Dart 2.12.