Rather than passing in display functions to everything, it might be better to define a TerminalOutput interface or similar that looks like...

interface TerminalOutput {
  printLine(String line);
  printTable(List<String> items);
  // ...
}

Modulo syntax, I don't know dart :-P

The idea being that a TerminalOutput would be an instance variable of the class, which can be referenced by any method. This would also provide an interface that can be implemented in tests that will let you query the logical structure of the output, rather than needing to parse HTML, ie:

class FakeTerminalOutput extends TerminalOutput {
  printLine(String line) {
    this.lines.add(line);
  }
  printTable(List<String> items) {
    this.lines.add(items.join(" "));
  }
}

class HtmlTerminalOutput extends TerminalOutput {
  printLine(String line) {
    // html-escape and <pre>-ify |line| here, and append it to the DOM.
  }
}