diff --git a/lib/src/block_syntaxes/list_syntax.dart b/lib/src/block_syntaxes/list_syntax.dart index d8711bb6..534ca3e7 100644 --- a/lib/src/block_syntaxes/list_syntax.dart +++ b/lib/src/block_syntaxes/list_syntax.dart @@ -268,7 +268,7 @@ abstract class ListSyntax extends BlockSyntax { final children = itemParser.parseLines(parentSyntax: this); final itemElement = checkboxToInsert == null ? Element('li', children) - : (Element('li', [checkboxToInsert, ...children]) + : (Element('li', _addCheckbox(children, checkboxToInsert)) ..attributes['class'] = taskListClass); itemNodes.add(itemElement); @@ -318,6 +318,17 @@ abstract class ListSyntax extends BlockSyntax { return listElement; } + List _addCheckbox(List children, Element checkbox) { + if (children.isNotEmpty) { + final firstChild = children.first; + if (firstChild is Element && firstChild.tag == 'p') { + firstChild.children!.insert(0, checkbox); + return children; + } + } + return [checkbox, ...children]; + } + void _removeLeadingEmptyLine(ListItem item) { if (item.lines.isNotEmpty && item.lines.first.isBlankLine) { item.lines.removeAt(0); diff --git a/test/extensions/unordered_list_with_checkboxes.unit b/test/extensions/unordered_list_with_checkboxes.unit index 170b6de4..f33161e2 100644 --- a/test/extensions/unordered_list_with_checkboxes.unit +++ b/test/extensions/unordered_list_with_checkboxes.unit @@ -62,4 +62,22 @@
[ ] five
 
+ +>>> checkbox list separated with blank lines +- [ ] A + +- [ ] B + +- [ ] +<<< + \ No newline at end of file