applyCommand method

void applyCommand(
  1. MarkdownEditorCommand command, {
  2. String? argument,
})

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');
  }
}