applyCommand method
Applies a Markdown editing command.
argument is command-specific: link and image use it as the URL, code
block uses it as the language, and other commands ignore it.
Implementation
void applyCommand(MarkdownEditorCommand command, {String? argument}) {
switch (command) {
case MarkdownEditorCommand.paragraph:
_setSelectedLinesToParagraph();
case MarkdownEditorCommand.bold:
_wrapSelection('**', '**', placeholder: 'bold');
case MarkdownEditorCommand.italic:
_wrapSelection('*', '*', placeholder: 'italic');
case MarkdownEditorCommand.strikethrough:
_wrapSelection('~~', '~~', placeholder: 'strikethrough');
case MarkdownEditorCommand.inlineCode:
_wrapSelection('`', '`', placeholder: 'code');
case MarkdownEditorCommand.heading1:
_prefixSelectedLines('# ', stripHeading: true);
case MarkdownEditorCommand.heading2:
_prefixSelectedLines('## ', stripHeading: true);
case MarkdownEditorCommand.heading3:
_prefixSelectedLines('### ', stripHeading: true);
case MarkdownEditorCommand.heading4:
_prefixSelectedLines('#### ', stripHeading: true);
case MarkdownEditorCommand.heading5:
_prefixSelectedLines('##### ', stripHeading: true);
case MarkdownEditorCommand.heading6:
_prefixSelectedLines('###### ', stripHeading: true);
case MarkdownEditorCommand.unorderedList:
_prefixSelectedLines('- ');
case MarkdownEditorCommand.orderedList:
_prefixSelectedLines('', ordered: true);
case MarkdownEditorCommand.taskList:
_prefixSelectedLines('- [ ] ');
case MarkdownEditorCommand.blockquote:
_prefixSelectedLines('> ');
case MarkdownEditorCommand.codeBlock:
_wrapBlock(
argument == null || argument.isEmpty ? '```' : '```$argument',
'```',
placeholder: 'code',
);
case MarkdownEditorCommand.link:
final url = argument == null || argument.isEmpty
? 'https://example.com'
: argument;
_wrapSelection('[', ']($url)', placeholder: 'link');
case MarkdownEditorCommand.image:
final url =
argument == null || argument.isEmpty ? 'image-url' : argument;
_insertImage(url);
case MarkdownEditorCommand.table:
insertTable();
case MarkdownEditorCommand.blockMath:
_wrapBlock(r'$$', r'$$', placeholder: r'E = mc^2');
case MarkdownEditorCommand.mermaidDiagram:
_insertSeparatedBlock(
'```mermaid\n'
'flowchart TD\n'
' A[Start] --> B[End]\n'
'```',
);
case MarkdownEditorCommand.horizontalRule:
_insertSeparatedBlock('---');
case MarkdownEditorCommand.wikilink:
_wrapSelection('[[', ']]', placeholder: 'Note');
}
}