Я создаю процесс, используя Process.start, и немного застрял с получателем stdin. В идеале у меня есть StreamController, настроенный в другом месте, чей поток строк я хотел бы передать в stdin. Но сложных примеров взаимодействия с Process.stdin не так уж и много, поэтому я не уверен, как сделать что-либо, кроме записи на stdin.
Итак, у меня есть что-то вроде этого, в которое я могу добавлять сообщения String:
StreamController<String> processInput = new StreamController<String>.broadcast();
И я хочу сделать что-то вроде этого:
Process.start(executable, args, workingDirectory: dir.path, runInShell: true).then((Process process) {
process.stdout
.transform(UTF8.decoder)
.listen((data) {
s.add('[[CONSOLE_OUTPUT]]' + data);
});
process.stdin.addStream(input.stream);
});
Я понимаю, что addStream()
хочет Stream<List<int>>
, хотя не уверен, почему это так.