Mobile App Development · Dart/Flutter
O switch statement clássico (com case/break/default) e a switch expression moderna do Dart (com => e _) para lidar com múltiplas opções de decisão.
Aplicar switch para lidar com múltiplas opções de decisão de forma mais legível que um longo encadeamento de if/else if. Você vai ver as duas formas disponíveis em Dart: o switch statement tradicional, com case e break, e a switch expression, que retorna um valor diretamente usando =>.
switch (v) { case x: ... break; }
Switch statement clássico: cada case é um bloco de código; o break evita que a execução "caia" para o próximo case.
default:
Bloco executado quando nenhum case anterior corresponde ao valor testado.
switch (v) { x => resultado }
Switch expression (Dart 3+): cada linha mapeia um valor a um resultado e o switch inteiro retorna esse resultado diretamente.
_ => valor
Padrão coringa da switch expression — equivalente ao default do switch statement.
switch em String
O valor comparado não precisa ser int: um switch também funciona muito bem sobre String, como um perfil de usuário.
cond ? a : b
Qualquer expressão pode ficar à direita do => em uma switch expression, inclusive um operador ternário para validações.
break
Encerra o case atual no switch statement, impedindo que os cases seguintes também sejam executados.
switch reduz encadeamentos longos de if/else if quando há vários valores fixos e conhecidos a comparar.
// Exemplo: switch statement (com 'case'/'break') e switch expression (com '=>').
void main() {
// Switch statement: cada 'case' é um bloco de código; 'break' evita "fall-through".
final diaSemana = 3;
switch (diaSemana) {
case 1:
print('Domingo');
break;
case 2:
print('Segunda-feira');
break;
case 3:
print('Terca-feira');
break;
default:
print('Dia invalido');
}
// Switch expression: retorna um valor diretamente, sem 'break' nem 'case' com dois-pontos.
final String perfil = 'editor';
final String acesso = switch (perfil) {
'admin' => 'Acesso total ao sistema',
'editor' => 'Pode criar e editar conteudos',
'aluno' => 'Pode assistir aulas e resolver exercicios',
_ => 'Perfil desconhecido',
};
print(acesso);
// O 'arm' de uma switch expression pode conter qualquer expressão, inclusive ternário.
final int a = 10;
final int b = 0;
final resultado = switch ('dividir') {
'dividir' => b != 0 ? a / b : 'Erro: divisao por zero',
_ => 'Operacao invalida',
};
print('Resultado: $resultado');
}
Terca-feira Pode criar e editar conteudos Resultado: Erro: divisao por zero
diaSemana = 4.'visitante' e confira a saída.int representando nota (0 a 10) que retorne o conceito: A, B, C ou D.