Menu
Coddy logo textTech

Resumen - Manejo Seguro de Null

Parte de la sección Fundamentos del Journey de Dart de Coddy — lección 82 de 94.

challenge icon

Desafío

Fácil

Estás construyendo un sistema de perfil de usuario para una aplicación móvil. Crea una clase UserProfile que demuestre tu comprensión de las características de seguridad de nulos de Dart.

Implementa una clase UserProfile con lo siguiente:

  1. Propiedades no nulas (deben siempre tener un valor):
    • id de tipo int
    • createdDate de tipo String
  2. Propiedades anulables (pueden ser nulas en la inicialización):
    • name de tipo String?
    • email de tipo String?
    • age de tipo int?
  3. Propiedad inicializada tarde:
    • displayName de tipo String, declarada usando la palabra clave late
  4. Constructor:
    • Acepta id y createdDate como parámetros requeridos
    • Inicializa displayName a "Guest"
  5. Método: <strong>void printProfile()</strong> Imprime el perfil de usuario con el siguiente 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>
    • Actualiza la propiedad email con el nuevo valor.
  7. Método: <strong>String getDisplayName()</strong>
    • Si name no es nulo, establece displayName = name! (usando el operador de afirmación de no nulo)
    • Devuelve el valor actual de displayName

Importante: Después de actualizar la propiedad name, debes llamar a getDisplayName() para actualizar el campo displayName antes de imprimir el perfil nuevamente.

Completa el código para crear un perfil, actualizarlo y mostrar la información como se muestra en la salida esperada.

Pruébalo tú mismo

void main() {
  // Crear un perfil de usuario
  final profile = UserProfile(1, 'today');
  
  // Imprimir perfil inicial
  profile.printProfile();
  
  // Actualizar perfil
  profile.name = 'John Doe';
  profile.updateEmail('john@example.com');
  profile.age = 30;
  
  // Actualizar nombre de visualización e imprimir perfil actualizado
  profile.getDisplayName(); // Llamar esto para actualizar displayName
  profile.printProfile();
}

class UserProfile {
  // TODO: Agregar propiedades (id, createdDate, name, email, age, displayName)
  
  // TODO: Crear constructor
  
  // TODO: Implementar el método printProfile()
  
  // TODO: Implementar el método updateEmail()
  
  // TODO: Implementar el método getDisplayName()
}

Todas las lecciones de Fundamentos