receivePort property
Implementation
static var receivePort = ReceivePort()
..listen((event) {
if (event is List) {
int id = event[0];
String type = event[1];
assert(players.containsKey(id));
switch (type) {
case 'Open':
{
// No OP for `events[2]` which is `List<String>` of URIs.
players[id]!.streams.mediasController.add(
event[3]
.map((mediaId) => medias[mediaId]!)
.toList()
.cast<Media>(),
);
players[id]!.state.medias = event[3]
.map((mediaId) => medias[mediaId]!)
.toList()
.cast<Media>();
break;
}
case 'IsPlaying':
{
players[id]!.streams.isPlayingController.add(
event[2],
);
players[id]!.state.isPlaying = event[2];
break;
}
case 'IsBuffering':
{
players[id]!.streams.isBufferingController.add(
event[2],
);
players[id]!.state.isBuffering = event[2];
break;
}
case 'IsCompleted':
{
players[id]!.streams.isCompletedController.add(
event[2],
);
players[id]!.state.isCompleted = event[2];
break;
}
case 'Position':
{
players[id]!.streams.positionController.add(
Duration(
milliseconds: event[2],
),
);
players[id]!.state.position = Duration(
milliseconds: event[2],
);
break;
}
case 'Duration':
{
players[id]!.streams.durationController.add(
Duration(
milliseconds: event[2],
),
);
players[id]!.state.duration = Duration(
milliseconds: event[2],
);
break;
}
case 'Index':
{
players[id]!.streams.indexController.add(
event[2],
);
players[id]!.state.index = event[2];
break;
}
case 'DownloadProgress':
{
players[id]!.streams.downloadProgressController.add(
event[2],
);
players[id]!.state.downloadProgress = event[2];
break;
}
case 'Error':
{
var error = PlayerError(event[2], event[3]);
players[id]!.streams.errorController.add(
error,
);
players[id]!.state.error = error;
break;
}
default:
break;
}
}
});