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