class PlayerBloc extends Bloc { final RadioPlayer radioPlayer; PlayerBloc({@required this.radioPlayer}) : assert(radioPlayer != null); @override PlayerState get initialState => PausedState(); @override Stream mapEventToState( PlayerEvent event, ) async* { if (event is PlayEvent && state is! PlayingState) { radioPlayer.play(url: event.url); yield PlayingState(); } else if (event is PauseEvent) { radioPlayer.pause(); yield PausedState(); } } }