Conversion entre tipos de datos en Dart

No todos los programas se pueden resolver de la forma que vimos antes, de hecho, es probable que ninguno en realidad. Muchas veces necesitamos que el usuario ingrese datos, y para eso usamos el método readLineSync() de la clase stdin.

Esta función recibe lo que el usuario escriba en formato texto (String), por lo que si queremos otro tipo de dato, debemos convertirlo usando las siguientes funciones:

  • Entero: int.parse(cadenaEntero)
  • Decimal: double.parse(cadenaDecimal)
  • Número: num.parse(cadenaNumero)
  • Entero grande: BigInt.parse(cadenaEnteroGrande)
  • Booleano: bool.parse(cadenaBooleano)
  • Fecha: DateTime.parse(cadenaFecha)

Es importante saber que si la cadena no se puede convertir al tipo de dato deseado (porque no tiene el formato correcto), el programa dará error. Para evitarlo, podemos usar tryParse(), que devuelve null en caso de error.



Ejemplo: Solicitar datos al usuario

Vamos a modificar nuestro programa anterior para que el usuario ingrese los números a sumar y multiplicar.

Si escribimos esta línea:

final valor1 = int.parse(stdin.readLineSync());

Dart nos mostrará una advertencia sobre un posible error de valores nulos. Si el usuario no ingresa un número y solo presiona Enter, el programa intentará hacer operaciones con un valor null, lo que generará un error.

Una solución rápida es usar el símbolo !, asegurando que el valor no será nulo. No es la mejor solución a largo plazo, pero por ahora nos sirve.

Así quedaría corregido:

final valor1 = int.parse(stdin.readLineSync()!);

Y el código completo:

import 'dart:io';

void main() {
  stdout.write('Ingrese un número entero: ');
  final numero1 = int.parse(stdin.readLineSync()!);
  
  stdout.write('Ingrese el segundo número entero: ');
  final numero2 = int.parse(stdin.readLineSync()!);
  
  var resultado = numero1 + numero2;
  print('La suma de $numero1 + $numero2 es $resultado');
  
  resultado = numero1 * numero2;
  print('El producto de $numero1 * $numero2 es $resultado');
}

Nota: En DartPad, la importación de dart:io no está soportada, por lo que tendrás que definir los valores manualmente en ese entorno. Sin embargo, este código funciona perfectamente en un editor de código en tu computadora.

Comentarios