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á criando um sistema de perfil de usuário para um aplicativo móvel. Crie uma classe UserProfile que demonstre sua compreensão dos recursos de segurança contra valores nulos 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 posteriormente:
    • displayName do tipo String, declarada usando a palavra-chave late
  4. Construtor:
    • Aceita id e createdDate como parâmetros obrigatórios
    • Inicializa displayName com "Guest"
  5. Método: <strong>void printProfile()</strong> Exibe 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 asserção de não nulo)
    • Retorna o valor atual de displayName

Importante: depois de atualizar a propriedade name, você deve chamar getDisplayName() para atualizar o campo displayName antes de exibir o perfil novamente.

Complete o código para criar um perfil, atualizá-lo e exibir as informações conforme mostrado na saída esperada.

Experimente você mesmo

void main() {
  // Criar um perfil de usuário
  final profile = UserProfile(1, 'today');
  
  // Imprimir o perfil inicial
  profile.printProfile();
  
  // Atualizar o perfil
  profile.name = 'John Doe';
  profile.updateEmail('john@example.com');
  profile.age = 30;
  
  // Atualizar o nome de exibição e imprimir o perfil atualizado
  profile.getDisplayName(); // Chame isto para atualizar displayName
  profile.printProfile();
}

class UserProfile {
  // TODO: Adicionar propriedades (id, createdDate, name, email, age, displayName)
  
  // TODO: Criar construtor
  
  // TODO: Implementar o método printProfile()
  
  // TODO: Implementar o método updateEmail()
  
  // TODO: Implementar o método getDisplayName()
}

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Dart online