bool y el operador ? :
Parte de la sección Cómo hacerla interactiva del Journey de Flutter de Coddy. Lección 17 de 34.
Algunos valores solo pueden ser sí o no: si la luz está encendida, si la casilla está marcada. El tipo de Dart para ellos es bool, y sus dos valores son true y false:
bool _isOn = false;El ! delante de un bool lo invierte, así que _isOn = !_isOn; convierte true en false y false en true. El método _flip de la lámpara ya hace eso.
Para mostrar una cosa u otra según un bool, usa el condicional ? :. Se lee como una pregunta: ¿está encendida? Después esto, si no aquello.
Text(_isOn ? 'On' : 'Off')
Icon(Icons.star, color: _isOn ? Colors.red : Colors.black)Antes del ? va algo verdadero o falso. Después, el valor para true; luego : y el valor para false. Funciona en cualquier lugar donde vaya un valor: un texto, un color, un tamaño.
Desafío
FácilEl botón Switch cambia el valor de _isOn, pero la lámpara siempre parece apagada. Usa ? : para que, cuando _isOn sea true, el texto diga The light is on y la bombilla sea Colors.amber, y de lo contrario diga The light is off y la bombilla sea Colors.grey.
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> {
bool _isOn = false;
void _flip() {
setState(() {
_isOn = !_isOn;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Lamp')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.lightbulb, size: 96, color: Colors.grey),
const Text('The light is off'),
const SizedBox(height: 16),
ElevatedButton(onPressed: _flip, child: const Text('Switch')),
],
),
),
);
}
}
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 deslizador5Decisiones
bool y el operador ? :Decisiones con if y elseAnd, Or y Not en DartMostrar y ocultar un widgetAtenuar un botónPractica por tu cuenta: Compilador de Flutter online