Menu
Coddy logo textTech

Resumo - Lidando com Null de Forma Segura

Parte da seção Fundamentos do Journey de Dart da Coddy — lição 82 de 94.

challenge icon

Desafio

Fácil

Você 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:

  1. Propriedades não anuláveis (devem sempre ter um valor):
    • id do tipo int
    • createdDate do tipo String
  2. Propriedades anuláveis (podem ser nulas na inicialização):
    • name do tipo String?
    • email do tipo String?
    • age do tipo int?
  3. Propriedade inicializada tardiamente:
    • displayName do tipo String, declarada usando a palavra-chave late
  4. Construtor:
    • Aceita id e createdDate como parâmetros obrigatórios
    • Inicializa displayName para "Guest"
  5. 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>
    -------------------
  6. Método: <strong>void updateEmail(String? newEmail)</strong>
    • Atualiza a propriedade email com o novo valor.
  7. Método: <strong>String getDisplayName()</strong>
    • Se name não for nulo, define displayName = name! (usando o operador de afirmação de nulidade)
    • Retorna o valor atual de displayName

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