seek method

Future<void> seek(
  1. double seconds, {
  2. SeekMode mode = SeekMode.relative,
})

Implementation

Future<void> seek(double seconds, {SeekMode mode = SeekMode.relative}) async {
  // tracks if the seek event has been emitted
  bool seekEventStarted = false;

  Socket observeSocket = await Socket.connect(
      InternetAddress(socketURI, type: InternetAddressType.unix), 0);

  await command('seek', [seconds.toString(), mode.name, 'exact']);

  observeSocket.listen((event) {
    var messages = utf8.decode(event).split("\n");
    for (var message in messages) {
      if (message.isNotEmpty) {
        Map messageMap = jsonDecode(message);
        if (messageMap.containsKey("event")) {
          if (messageMap["event"] == 'seek') {
            seekEventStarted = true;
          }
          // resolve the promise if the playback-restart event was fired
          else if (seekEventStarted &&
              messageMap["event"] == 'playback-restart') {
            observeSocket.destroy();
          }
        }
      }
    }
  });
}