Números desde un campo de texto
Parte de la sección Cómo hacerla interactiva del Journey de Flutter de Coddy. Lección 25 de 34.
Un campo siempre contiene un String, incluso cuando muestra dígitos: '12' es texto, y '12' * 7 no es 84. Para hacer cálculos con él, conviértelo en un int:
int.tryParse('12') // 12
int.tryParse('hello') // nullnull significa «ningún valor»: 'hello' no es un número, así que no hay ninguno. El tipo del resultado es int?, un int o null. Antes de hacer cálculos, asígnale un valor alternativo para usar, con ??:
int age = int.tryParse(value) ?? 0;Lee a ?? b como «a, o b si a es null». También existe int.parse, sin «try», pero detiene la aplicación con un error si el texto no es un número, y la gente escribe todo tipo de cosas.
En un teléfono, keyboardType: TextInputType.number abre un teclado de dígitos, así que la gente casi nunca escribe letras.
Desafío
Intermedio- Haz que el campo abra el teclado numérico.
- En
onChanged, convierte el texto en unintconint.tryParse, usa0cuando no sea un número y guárdalo en_age. - Muestra
That is 35 in dog yearspara una edad de 5: la edad multiplicada por 7.
Pruébalo tú mismo
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _ageText = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Dog Years')),
body: Padding(
padding: const EdgeInsets.all(24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextField(
decoration: const InputDecoration(
labelText: 'Your age',
border: OutlineInputBorder(),
),
onChanged: (String value) {
setState(() {
_ageText = value;
});
},
),
const SizedBox(height: 24),
Text('That is ? in dog years', style: const TextStyle(fontSize: 24)),
],
),
),
);
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Cómo hacerla interactiva
1Botones
Tu primer botónImprimir en la consolaBotones de texto y contornoBotones con iconosEl botón de acción flotante7Interruptores y deslizadores
Encender y apagar con un interruptorMarcar una casillaElegir un valor con un deslizador3Widgets con estado
Una clase Widget propiaMuestra un SnackBarsetState vuelve a dibujar la pantallaEscribe un StatefulWidgetUn contador que sube y bajaHot Reload conserva el estado6Campos de texto
Tu primer campo de textoReaccionar al escribirLeer un campo con un controladorNúmeros desde un campo de textoDecimales con toStringAsFixedPractica por tu cuenta: Compilador de Flutter online