Enum con extensiones
Los métodos de extensión no han sido compatibles hasta la versión 2.6.0 (ver Diagnostic messages: sdk_version_extension_methods), lo que significa que en el archivo pubspec.yaml debe figurar esa versión como mínimo:
environment:
sdk: ">=2.6.0 <3.0.0"
Dos ejemplos de métodos de extensión con enum, un tipo especial de clase utilizada para representar un número fijo de valores constantes:
enum Palo { oros, bastos, espadas, copas }
extension PaloExtension on Palo {
static const palos = {
Palo.oros: 'oros',
Palo.bastos: 'bastos',
Palo.espadas: 'espadas',
Palo.copas: 'copas'
};
String get nombre => palos[this];
}
main() {
print(Palo.bastos.nombre); // bastos
}
import 'package:audioplayers/audio_cache.dart';
import 'package:audioplayers/audioplayers.dart';
enum Sonido { baraja, carta, tecla, win, over }
extension SoundExtension on Sonido {
static const files = {
Sonido.baraja: 'audio/baraja.mp3',
Sonido.carta: 'audio/carta.mp3',
Sonido.tecla: 'audio/tecla.mp3',
Sonido.win: 'audio/win.mp3',
Sonido.over: 'audio/over.mp3'
};
String get file => files[this];
void audio() async {
await AudioCache().play(file, mode: PlayerMode.LOW_LATENCY);
}
}
main(){
Sonido.tecla.audio();
}