aligns numerical and bullet lists along with text content (#1054)

pull/1061/head
Nathenael D 2 years ago committed by GitHub
parent 12bafd8d98
commit 1c5177953f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      lib/src/widgets/text_block.dart
  2. 17
      lib/src/widgets/text_line.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<int, int> 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;
}

@ -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<TextLine> {
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,

Loading…
Cancel
Save