bool e o operador ?:
Parte da seção Tornando o app interativo do Journey de Flutter da Coddy. Lição 17 de 34.
Alguns valores são sempre sim ou não: a luz está acesa, a caixa está marcada. O tipo do Dart para eles é bool, e seus dois valores são true e false:
bool _isOn = false;O ! antes de um bool inverte seu valor, então _isOn = !_isOn; transforma true em false e false em true. O método _flip da lâmpada já faz isso.
Para mostrar uma coisa ou outra dependendo de um bool, use o condicional ? :. Ele é lido como uma pergunta: está acesa? então isto, senão aquilo.
Text(_isOn ? 'On' : 'Off')
Icon(Icons.star, color: _isOn ? Colors.red : Colors.black)Antes do ? vai algo verdadeiro ou falso. Depois dele, o valor para verdadeiro, em seguida : e o valor para falso. Isso funciona onde quer que vá um valor: um texto, uma cor, um tamanho.
Desafio
FácilO botão Switch alterna _isOn, mas a lâmpada sempre parece apagada. Use ? : para que, quando _isOn for verdadeiro, o texto diga The light is on e a lâmpada seja Colors.amber; caso contrário, o texto diga The light is off e a lâmpada seja Colors.grey.
Experimente você mesmo
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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Tornando o app interativo
1Botões
Seu primeiro botãoImprimir no consoleBotões de texto e contornoBotões com íconesO botão de ação flutuante7Interruptores e controles deslizantes
Ligar e desligar com um interruptorMarcar uma caixa de seleçãoEscolher um valor com um controle deslizante5Decisões
bool e o operador ?: Decisões com if e elseAnd, Or e Not em DartExibir e ocultar um widgetDesativar visualmente um botãoPratique por conta própria: Compilador de Flutter online