Neste artigo veremos como usar os operadores de reconhecimento de NULL na linguagem Dart. |
DART(tradução: dardo, pequeno míssel) é a linguagem da Google usada pelo Flutter.
O Flutter é um SDK de aplicativo móvel do Google que ajuda a criar aplicativos móveis modernos para iOS e Android usando uma única (quase) base de código.
Se você não conhece o Flutter veja o meu artigo : Flutter - Primeiros contatos e impressões
O objetivo dos artigos sobre o DART é abordar recursos específicos da linguagem que são uma característica do DART de forma a ajudar programadores C# a entender esses recursos.
DART - Operadores para tratamento de NULL
O DART possui alguns operadores que podemos usar para verificar o NULL e realizar o tratamento conforme o operador.
1 - Operador ??
expressao_1 ?? expressao_2
x = y ?? z
|
- Avalia
expressao_1 e caso for NULL
atribui a expressao_2
- Atribui z a x se y for NULL
// expressao1 é null var expressao1; String expressao2 = "expressao1 é null"; // retorna expressao2 pois expressao1 é null print(expressao1 ?? expressao2); //retorna true pois espressao1 é null var isExpessao1Null = expressao1 ?? true; print(isExpessao1Null); |
Se você quiser assegurar que o valor de um objeto não será null faça assim: objeto = objeto ?? 1;
2 - Operador ??=
objeto ??= valor
|
- Atribui valor ao objeto se o objeto for NULL
// expressao1 é null var expressao1; String expressao2 = "expressao1 é null"; // atribui expressao2 a expressao1 print(expressao1 ??= expressao2); // atribui true a espressao3 var expressao3; var isExpessao3Null = expressao3 ??= true; print(isExpessao3Null); |
3 - Operador ?.
objeto?.valor objeto?.metodo() objeto?.valor1?.valor2?.metodo()
|
- Se objeto
for não for NULL avalia valor;
- Chama um método de um objeto se o objeto Não for
NULL;
- Se objeto ou valor1
ou valor2 forem NULL a
expressão inteira é null caso contrário executa o método;
// executa calculaPreco somente se pessoa,
endereco e cep não forem null final valor = pessoa?.endereco?.cep?.calculaPreco(); class Gato { String nome; ola(){
print('sou um gato ');
}
}
void main() {
Gato gato1 = Gato();
print(gato1?.ola()); //imprime 'sou um gato'
}
|
4 - Operador ... e ...?
objeto?.valor objeto?.metodo() objeto?.valor1?.valor2?.metodo()
|
A partir da versão 2.3 do Dart foi introduzido o operador (...) que se desdobra em um novo operador ...? para tratamento de NULL.
Colocando ... antes de uma expressão dentro de uma coleção o resultado da expressão será descompactado e seus elementos serão inseridos dentro da coleção.
void main() {
List<int> impares = [1, 3, 5, 7, 9];
List<int> pares = [2, 4, 6, 8];
final numeros = [0, ...impares, ...pares]; print(numeros); //imprime [0, 1, 3, 5, 7, 9, 2, 4, 6, 8] }
|
O operador ...? apenas vai realizar essa operação se a expressão não for null.
void main() {
List<int> impares = [1, 3, 5, 7, 9];
List<int> pares;
final numeros = [0, ...impares, ...?pares]; print(numeros); //imprime [0, 1, 3, 5, 7, 9] }
|
Você pode testar todos os códigos on-line neste link: https://dartpad.dartlang.org/
Porque a lei foi dada por Moisés; a
graça e a verdade vieram por Jesus Cristo.
Deus nunca foi visto por alguém. O Filho unigênito, que está no seio do Pai,
esse o revelou.
João 1:17,18
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Flutter - Lista Básica - Macoratti
Flutter - Apresentando o widget MaterialApp - Macoratti
Flutter - Apresentando Flutter Studio - Macoratti
Flutter - Apresentando Widgets - Macoratti
Flutter - Criando uma tela de login - Macoratti