lines property

List<ServiceLogLine> get lines

What the pane draws: the settled lines, then whatever each stream is part way through drawing.

A transient frame is last on purpose — it is the line the child is still painting, and the next frame replaces it in place.

Implementation

List<ServiceLogLine> get lines => [
  ..._settled,
  if (_stdout.transient case final frame?) frame,
  if (_stderr.transient case final frame?) frame,
];