SessionsScreen constructor
SessionsScreen(
- AppContext ctx,
- String nodeId
Builds the sessions screen for nodeId.
Implementation
SessionsScreen(this.ctx, this.nodeId) {
_controller = SessionsController(ctx.service, nodeId);
_body = div(classes: 'list');
_refresh = button(
'Refresh',
className: 'btn-sm',
onClick: _controller.refresh,
);
element = el(
'div',
classes: 'stack',
children: [
el(
'div',
classes: 'toolbar',
children: [
button(
'← Node',
className: 'ghost',
onClick: () =>
ctx.router.go('/nodes/${Uri.encodeComponent(nodeId)}'),
),
el('h1', text: 'Sessions', classes: 'sessions-title'),
el('div', classes: 'grow'),
button(
'New',
primary: true,
className: 'btn-sm',
onClick: () => ctx.router.go(
'/nodes/${Uri.encodeComponent(nodeId)}/sessions/new',
),
),
_refresh,
],
),
// The node id, shown big and white like the node-info title.
el('h1', classes: 'mono node-title', text: nodeId),
_body,
],
);
_sub = _controller.state.stream.listen(_render);
// Re-render when the highlighted (last-interacted) session changes.
_lastSub = ctx.lastSession.stream.listen(
(_) => _render(_controller.state.value),
);
_render(_controller.state.value);
unawaited(_controller.refresh());
}