Даже если бы такой метод существовал (кстати, RawSocket
имеет такую функцию, но он неблокирующий и будет возвращать только то, что доступно - потенциально нулевые байты), у вас все равно будет пара проблем.
Будущее будет завершено произвольным количеством байтов, и это может быть не все сообщение, поэтому вам придется сохранить эти байты и подождать еще.
Вероятно, что более важно, как бы вы использовать такой метод? Может быть, вот так?
Future<Uint8List> readBytes() async {
return await _socket.read(); // NB no such method really exists
}
но как вы тогда это используете?
readBytes().then((bytes) {
// process the bytes
});
но это не проще, чем
socket.listen((bytes) {
// process the bytes
});
Возможно, вы можете объяснить, что вам не нравится listen
или почему вы не можете его использовать. Помните, что блокирующие чтения, которые вы можете использовать в Java, обычно выполняются в фоновых потоках, которых у вас нет в Dart.