diff --git a/lib/src/widgets/text_block.dart b/lib/src/widgets/text_block.dart index f30e71cc..24ee6441 100644 --- a/lib/src/widgets/text_block.dart +++ b/lib/src/widgets/text_block.dart @@ -135,6 +135,7 @@ class EditableTextBlock extends StatelessWidget { _buildLeading(context, line, index, indentLevelCounts, count), TextLine( line: line, + index: index, textDirection: textDirection, embedBuilder: embedBuilder, customStyleBuilder: customStyleBuilder, @@ -164,25 +165,6 @@ class EditableTextBlock extends StatelessWidget { Map indentLevelCounts, int count) { final defaultStyles = QuillStyles.getStyles(context, false); final attrs = line.style.attributes; - if (attrs[Attribute.list.key] == Attribute.ol) { - return QuillNumberPoint( - index: index, - indentLevelCounts: indentLevelCounts, - count: count, - style: defaultStyles!.leading!.style, - attrs: attrs, - width: 32, - padding: 8, - ); - } - - if (attrs[Attribute.list.key] == Attribute.ul) { - return QuillBulletPoint( - style: - defaultStyles!.leading!.style.copyWith(fontWeight: FontWeight.bold), - width: 32, - ); - } if (attrs[Attribute.list.key] == Attribute.checked) { return CheckboxPoint( @@ -235,8 +217,7 @@ class EditableTextBlock extends StatelessWidget { var baseIndent = 0.0; - if (attrs.containsKey(Attribute.list.key) || - attrs.containsKey(Attribute.codeBlock.key)) { + if (attrs.containsKey(Attribute.codeBlock.key)) { baseIndent = 32.0; } diff --git a/lib/src/widgets/text_line.dart b/lib/src/widgets/text_line.dart index b20ea22f..f3594a91 100644 --- a/lib/src/widgets/text_line.dart +++ b/lib/src/widgets/text_line.dart @@ -38,12 +38,14 @@ class TextLine extends StatefulWidget { required this.controller, required this.onLaunchUrl, required this.linkActionPicker, + this.index, this.textDirection, this.customStyleBuilder, Key? key, }) : super(key: key); final Line line; + final int? index; final TextDirection? textDirection; final EmbedsBuilder embedBuilder; final DefaultStyles styles; @@ -294,9 +296,22 @@ class _TextLineState extends State { final nodeStyle = textNode.style; final isLink = nodeStyle.containsKey(Attribute.link.key) && nodeStyle.attributes[Attribute.link.key]!.value != null; + final attrs = widget.line.style.attributes; + const whiteSpace = TextSpan(text: ' '); + + var leading = const TextSpan(); + if (attrs[Attribute.list.key] == Attribute.ol) { + leading = TextSpan(text: '${widget.index.toString()}.'); + } else if (attrs[Attribute.list.key] == Attribute.ul) { + leading = TextSpan( + text: '•', + style: + defaultStyles.leading!.style.copyWith(fontWeight: FontWeight.bold), + ); + } return TextSpan( - text: textNode.value, + children: [leading, whiteSpace, TextSpan(text: textNode.value)], style: _getInlineTextStyle( textNode, defaultStyles, nodeStyle, lineStyle, isLink), recognizer: isLink && canLaunchLinks ? _getRecognizer(node) : null,