Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] duvida quanto ao uso de switch case.

Estou com uma problema quanto ao uso do switch case em dart, estou usar o enum para numerar os conjuntos de instâncias, mas quando vou compará-las usado o switch case ele pede que cada instância seja utilizada na comparação, se eu remover alguma delas do código ele dá erro. No caso de usar o switch case é obrigatório usar todas as instâncias das variáveis ou tem alguma forma de só usar as específicas no momento?

void main(){

  escolherMeioTransporteEnum(Transporte.carro);

}

void escolherMeioTransporte(int locomocao){

  if (locomocao == 0){
    print(' vou de Carro para uma aventura!');
  }else if (locomocao == 1){
    print('vou de bike para aventura!');
  }else {
    print('vou para aventura!');
  }

}

void escolherMeioTransporteEnum(Transporte locomocao){
 // if(locomocao == Transporte.carro){
 //   print('vou de carro para uma aventura!');
 // }else if (locomocao == Transporte.bike){
 //   print('vou de bike para um aventura!');
 // }else{
 //  print('Vou para uma aventura!');
 // }

  switch (locomocao){
    case Transporte.carro:
    print('vou de carro para uma aventura!');
    break;
    case Transporte.bike:
    print('vou de bike para um aventura!');
    break;
    case Transporte.andando:
    print('vou andando para uma aventura!');
    break;
    case Transporte.skate:
    print('vou de skate para uma aventura!');
    break;
    case Transporte.aviao:
    print('vou de aviao para uma aventura!');
    break;
    case Transporte.trem:
    print('vou de trem para uma aventura!');
    case Transporte.patins:
    print('vou de patins para um aventura');
  }


}


enum Transporte{
  carro,bike,andando,skate,aviao,patins,trem, 
}
1 resposta
solução!

Olá, Guilherme!

Entendo sua dúvida, realmente o Dart requer que todos os casos de um enum sejam tratados em um bloco switch. Isso é uma característica da linguagem para garantir que todos os casos possíveis sejam considerados, evitando erros.

No entanto, se você não quiser tratar todos os casos, pode usar a cláusula default para capturar todos os outros casos que não foram explicitamente mencionados. Veja como ficaria:

void escolherMeioTransporteEnum(Transporte locomocao){
  switch (locomocao){
    case Transporte.carro:
      print('vou de carro para uma aventura!');
      break;
    case Transporte.bike:
      print('vou de bike para um aventura!');
      break;
    default:
      print('Vou para uma aventura!');
  }
}

Nesse exemplo, se locomocao for Transporte.carro ou Transporte.bike, ele imprimirá a mensagem correspondente. Para qualquer outro valor de Transporte, ele imprimirá 'Vou para uma aventura!'.

Espero ter ajudado e bons estudos!