BufferedKeys class abstract

A minimal buffer interface for synchronously reading the state of keys.

When reading directly from the terminal using dart:io, you can either:

  1. Block the program until a key is pressed (stdin.readByteSync()).
  2. Capture event codes as they are received (stdin.listen()).

BufferedKeys provides a synchronous API for the state of key codes:

import 'dart:io' as io;

void main() async {
  const frames = Duration(milliseconds: 1000 ~/ 60);
  const qKey = 0x51;
  final bufferedKeys = BufferedKeys.fromStream(io.stdin);

  io.stdout.writeln('Press Q to exit.');
  await for (final _ in Stream.periodic(frames)) {
    if (bufferedKeys.isPressed(qKey)) {
      break;
    }
    bufferedKeys.clear();
  }

  await bufferedKeys.close();
}

Constructors

BufferedKeys()
const
BufferedKeys.fromBuffer(Set<(int, int, int, int, int, int)> buffer)
Creates a new buffered keys instance using the provided buffer.
factory
BufferedKeys.fromStream(Stream<List<int>> input)
Creates a new buffered keys instance from the provided input stream.
factory

Properties

hashCode int
The hash code for this object.
no setterinherited
isAnyPressed bool
Returns whether any key code is currently pressed.
no setter
pressed Iterable<List<int>>
All currently pressed key code combinations.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

clear() → void
Clears the buffer of any key codes.
close() Future<void>
Closes the buffered keys and releases any resources.
isPressed(int code1, [int code2, int code3, int code4, int code5, int code6]) bool
Returns whether the provided key code combination is currently pressed.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited