Resumen - Manejo Seguro de Null
Parte de la sección Fundamentos del Journey de Dart de Coddy. Lección 82 de 94.
Desafío
FácilEstás creando un sistema de perfiles de usuario para una aplicación móvil. Crea una clase UserProfile que demuestre tu comprensión de las funciones de seguridad contra valores nulos de Dart.
Implementa una clase UserProfile con lo siguiente:
- Propiedades no anulables (siempre deben tener un valor):
idde tipointcreatedDatede tipoString
- Propiedades anulables (pueden ser nulas durante la inicialización):
namede tipoString?emailde tipoString?agede tipoint?
- Propiedad inicializada de forma diferida:
displayNamede tipoString, declarada mediante la palabra clavelate
- Constructor:
- Acepta
idycreatedDatecomo parámetros obligatorios - Inicializa
displayNamecon"Guest"
- Acepta
Método:
<strong>void printProfile()</strong>Imprime el perfil del 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> -------------------- Método:
<strong>void updateEmail(String? newEmail)</strong>- Actualiza la propiedad
emailcon el nuevo valor.
- Actualiza la propiedad
- Método:
<strong>String getDisplayName()</strong>- Si
nameno es nulo, establecedisplayName = name!(usando el operador de aserción de nulabilidad) - Devuelve el valor actual de
displayName
- Si
Importante: Después de actualizar la propiedad name, debes llamar a getDisplayName() para actualizar el campo displayName antes de volver a imprimir el perfil.
Completa el código para crear un perfil, actualizarlo y mostrar la información como se indica en la salida esperada.
Pruébalo tú mismo
void main() {
// Crea un perfil de usuario
final profile = UserProfile(1, 'today');
// Imprime el perfil inicial
profile.printProfile();
// Actualiza el perfil
profile.name = 'John Doe';
profile.updateEmail('john@example.com');
profile.age = 30;
// Actualiza el nombre para mostrar e imprime el perfil actualizado
profile.getDisplayName(); // Llama a esto para actualizar displayName
profile.printProfile();
}
class UserProfile {
// TODO: Añade propiedades (id, createdDate, name, email, age, displayName)
// TODO: Crea el constructor
// TODO: Implementa el método printProfile()
// TODO: Implementa el método updateEmail()
// TODO: Implementa el método getDisplayName()
}Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores de ComparaciónAND LógicoOR LógicoNOT LógicoOperadores de Prueba de TipoResumen - Realizando Comparaciones7Trabajando con Cadenas
Concatenación de CadenasInterpolación de CadenasCadenas MultilíneaPropiedades de CadenasMétodos Básicos de Cadenas10Colecciones - Conceptos básicos de Mapas
¿Qué son los Mapas?Creando un MapaAccediendo a Valores por ClavePares Clave-ValorObteniendo el Tamaño del MapaObteniendo las ClavesObteniendo los ValoresVerificando si una Clave Existe13Null Safety en Profundidad
Comprendiendo NullTipos NullableTipos No NullableOperador de Afirmación NullInicialización TardíaResumen - Manejo Seguro de Null16Desafíos Fundamentales
Desafío: Lista de cálculosDesafío: Suma de númerosDesafío: Encontrar producto2Variables y Tipos de Datos Básicos
¿Qué son las Variables?CadenasEnteros (int)Dobles (double)Booleanos (bool)Inferencia de Tipos con 'var'Variables FinalesVariables ConstantesConvenciones de NombresSeguridad Básica ante NullResumen - Declarando Variables8Flujo de control - Bucles
El bucle 'for'El bucle 'while'El bucle 'do-while'Usando 'break' en buclesUsando 'continue' en buclesResumen - Código repetitivo3Operadores Parte 1
Operadores AritméticosDivisión EnteraOperador MóduloIncremento y DecrementoAtajos de AsignaciónResumen - Cálculos Simples6Flujo de Control - Toma de Decisiones
La sentencia 'if'La sentencia 'else'La sentencia 'else if'Resumen - Decisiones SimplesSentencias 'if' AnidadasLa sentencia 'switch'9Colecciones - Listas Básicas
¿Qué son las listas?Creando una listaAccediendo por índiceObteniendo la longitud de la listaAgregando elementosEliminando elementosComprobando si una lista está vacíaIterando sobre una lista12Funciones Avanzadas
Parámetros Posicionales OpcionalesParámetros NombradosParámetros Nombrados RequeridosValores de Parámetro por DefectoResumen - Parámetros de Función15Proyecto: Calculadora Simple
ConfigurandoDeclarando NúmeroPractica por tu cuenta: Compilador de Dart online