commands property
commands is a section that lists applicable sub-NatrixCommands.
Implementation
@override
NatrixBlock get commands {
final List<NatrixCommand> commands = context.cmd.children.toList();
if (commands.isEmpty) {
return NatrixBlock.empty();
}
final List<NatrixText> lines = [];
final List<NatrixCommand> sortable = List.of(commands);
sortable.sort((a, b) => b.id.length.compareTo(a.id.length));
const int space = 3;
final int longestLength = sortable.first.id.length;
for (final NatrixCommand cmd in commands) {
String current = cmd.id;
current += " " * (longestLength - current.length + space);
final List<NatrixText> tips = NatrixText(
cmd.tooltip,
).wrap(maxLineLength - current.length);
for (int i = 0; i < tips.length; i++) {
if (i == 0) {
lines.add(NatrixText(current + tips[i].text));
continue;
}
lines.add(NatrixText(" " * current.length + tips[i].text));
}
}
return NatrixBlock(
heading: NatrixText("Commands:", style: NatrixStyle.bold),
content: NatrixStructure(
spacePrefix: 1,
sections: [NatrixColumn(lines: lines)],
),
);
}