initTerminal method

Future<void> initTerminal()

Implementation

Future<void> initTerminal() async {
  setState(() => this.title =
      "${widget.userName}@${widget.remoteIp}:${widget.remotePort}");
  terminal.write('Connecting...\r\n');

  final client = SSHClient(
    await SSHSocket.connect("localhost", widget.localPort),
    username: widget.userName,
    onPasswordRequest: () => widget.passWord,
  );

  terminal.write('Connected\r\n');

  final session = await client.shell(
    pty: SSHPtyConfig(
      width: terminal.viewWidth,
      height: terminal.viewHeight,
    ),
  );

  terminal.buffer.clear();
  terminal.buffer.setCursor(0, 0);

  terminal.onTitleChange = (title) {
    setState(() => this.title = title);
  };

  terminal.onResize = (width, height, pixelWidth, pixelHeight) {
    session.resizeTerminal(width, height, pixelWidth, pixelHeight);
  };

  terminal.onOutput = (data) {
    session.write(utf8.encode(data));
  };

  session.stdout
      .cast<List<int>>()
      .transform(Utf8Decoder())
      .listen(terminal.write);

  session.stderr
      .cast<List<int>>()
      .transform(Utf8Decoder())
      .listen(terminal.write);
}