Resumo - Lidando com Null de Forma Segura
Parte da seção Fundamentos do Journey de Dart da Coddy — lição 82 de 94.
Desafio
FácilVocê está construindo um sistema de perfil de usuário para um aplicativo móvel. Crie uma classe UserProfile que demonstre seu entendimento das funcionalidades de segurança de nulidade do Dart.
Implemente uma classe UserProfile com o seguinte:
- Propriedades não anuláveis (devem sempre ter um valor):
iddo tipointcreatedDatedo tipoString
- Propriedades anuláveis (podem ser nulas na inicialização):
namedo tipoString?emaildo tipoString?agedo tipoint?
- Propriedade inicializada tardiamente:
displayNamedo tipoString, declarada usando a palavra-chavelate
- Construtor:
- Aceita
idecreatedDatecomo parâmetros obrigatórios - Inicializa
displayNamepara"Guest"
- Aceita
Método:
<strong>void printProfile()</strong>Imprime o perfil do usuário no seguinte formato:User Profile: ID: <id> Created: <createdDate> Name: <name or 'Not provided'> Email: <email or 'Not provided'> Age: <age or 'Not provided'> Display Name: <displayName> -------------------- Método:
<strong>void updateEmail(String? newEmail)</strong>- Atualiza a propriedade
emailcom o novo valor.
- Atualiza a propriedade
- Método:
<strong>String getDisplayName()</strong>- Se
namenão for nulo, definedisplayName = name!(usando o operador de afirmação de nulidade) - Retorna o valor atual de
displayName
- Se
Importante: Após atualizar a propriedade name, você deve chamar getDisplayName() para atualizar o campo displayName antes de imprimir o perfil novamente.
Complete o código para criar um perfil, atualizá-lo e exibir as informações como mostrado na saída esperada.
Experimente você mesmo
void main() {
// Criar um perfil de usuário
final profile = UserProfile(1, 'today');
// Imprimir perfil inicial
profile.printProfile();
// Atualizar perfil
profile.name = 'John Doe';
profile.updateEmail('john@example.com');
profile.age = 30;
// Atualizar nome de exibição e imprimir perfil atualizado
profile.getDisplayName(); // Chame isso para atualizar displayName
profile.printProfile();
}
class UserProfile {
// TODO: Adicionar propriedades (id, createdDate, name, email, age, displayName)
// TODO: Criar construtor
// TODO: Implementar método printProfile()
// TODO: Implementar método updateEmail()
// TODO: Implementar método getDisplayName()
}Todas as lições de Fundamentos
4Operadores Parte 2
Operadores de ComparaçãoAND LógicoOR LógicoNOT LógicoOperadores de Teste de TipoResumo - Fazendo Comparações7Trabalhando com Strings
Concatenação de StringsInterpolação de StringsStrings Multi-linhaPropriedades de StringsMétodos Básicos de Strings10Coleções - Básicos de Mapas
O que são Mapas?Criando um MapaAcessando Valores por ChavePares Chave-ValorObtendo o Tamanho do MapaObtendo as ChavesObtendo os ValoresVerificando se uma Chave Existe13Null Safety em Profundidade
Entendendo NullTipos NulláveisTipos Não NulláveisOperador de Asserção de NullInicialização TardiaResumo - Lidando com Null de Forma Segura2Variáveis e Tipos de Dados Básicos
O que são Variáveis?StringsInteiros (int)Double (double)Booleanos (bool)Inferência de Tipo com 'var'Variáveis finalVariáveis constantesConvenções de NomenclaturaNull Safety BásicaResumo - Declarando Variáveis8Fluxo de Controle - Laços
O Laço 'for'O Laço 'while'O Laço 'do-while'Usando 'break' em LaçosUsando 'continue' em LaçosResumo - Repetindo Código3Operadores Parte 1
Operadores AritméticosDivisão InteiraOperador MóduloIncremento e DecrementoAtalhos de AtribuiçãoResumo - Cálculos Simples6Fluxo de Controle - Tomada de Decisões
A Instrução 'if'A Instrução 'else'A Instrução 'else if'Resumo - Decisões SimplesInstruções 'if' AninhadasA Instrução 'switch'9Coleções - Listas Básicas
O que são Listas?Criando uma ListaAcessando por ÍndiceObtendo o Tamanho da ListaAdicionando ElementosRemovendo ElementosVerificando se uma Lista Está VaziaIterando Sobre uma Lista12Funções Avançadas
Parâmetros Posicionais OpcionaisParâmetros NomeadosParâmetros Nomeados ObrigatóriosValores Padrão de ParâmetrosResumo - Parâmetros de Função15Projeto: Calculadora Simples
ConfigurandoDeclarando Número