Recibo este error cuando trato de usar el cambio de caso en dart. Tengo una clase abstracta y dos clases que la extienden. Ver el código a continuación
abstract class BankEvent{} class FetchBanks extends BankEvent{} class DeleteBank extends BankEvent{ final int bankId; DeleteBank(this.bankId); }Tengo que hacer algunas implementaciones dentro del método handleEvents que dependen de la instancia de la clase que recibo como parámetro. Pero recibo el error (el tipo de expresión de cambio de caso 'Tipo' debe ser un subtipo del tipo de expresión de cambio 'BankEvent') en la declaración de caso del caso de cambio. Mi código para la implementación del caso del interruptor está a continuación
handleEvents(BankEvent bankEvent){ switch(bankEvent){ case FetchBanks: break; } }¿Por qué no simplemente cambia su swith a una declaración if, así:
handleEvents(BankEvent bankEvent){ if(bankEvent is FetchBank){ // FetchBank stuff }else if(bankEvent is DeleteBank){ // DeleteBank stuff } }Esto funciona y es bastante legible. Además, puede deshacerse del enfoque de cambio.
Sí, finalmente encontré la respuesta después de un poco de investigación. Debería escribirse como se muestra a continuación.
handleEvents(BankEvent bankEvent){ switch(bankEvent.runtimeType){ case FetchBanks: break; } }