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 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:
- Propiedades no nulas (deben siempre tener un valor):
idde tipointcreatedDatede tipoString
- Propiedades anulables (pueden ser nulas en la inicialización):
namede tipoString?emailde tipoString?agede tipoint?
- Propiedad inicializada tarde:
displayNamede tipoString, declarada usando la palabra clavelate
- Constructor:
- Acepta
idycreatedDatecomo parámetros requeridos - Inicializa
displayNamea"Guest"
- Acepta
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> -------------------- 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 afirmación de no nulo) - 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 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
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úmero