Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions lib/src/editor/widgets/default_styles.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@ class DefaultTextBlockStyle {
this.horizontalSpacing,
this.verticalSpacing,
this.lineSpacing,
this.decoration,
);
this.decoration, {
this.contentPadding,
});

/// Base text style for a text block.
final TextStyle style;
Expand All @@ -53,6 +54,11 @@ class DefaultTextBlockStyle {
///
final VerticalSpacing lineSpacing;

/// Padding inserted between a text block's content and its [decoration]
/// boundary. Forwarded to the block's rendering as `contentPadding`.
/// Falls back to the editor's global content padding if null.
final EdgeInsets? contentPadding;

/// Decoration of a text block.
///
/// Decoration, if present, is painted in the content area, excluding
Expand All @@ -64,6 +70,7 @@ class DefaultTextBlockStyle {
HorizontalSpacing? horizontalSpacing,
VerticalSpacing? verticalSpacing,
VerticalSpacing? lineSpacing,
EdgeInsets? contentPadding,
BoxDecoration? decoration,
}) {
return DefaultTextBlockStyle(
Expand All @@ -72,6 +79,7 @@ class DefaultTextBlockStyle {
verticalSpacing ?? this.verticalSpacing,
lineSpacing ?? this.lineSpacing,
decoration ?? this.decoration,
contentPadding: contentPadding ?? this.contentPadding,
);
}
}
Expand Down Expand Up @@ -183,6 +191,7 @@ class DefaultListBlockStyle extends DefaultTextBlockStyle {
super.lineSpacing,
super.decoration,
this.checkboxUIBuilder, {
super.contentPadding,
this.indentWidthBuilder = TextBlockUtils.defaultIndentWidthBuilder,
this.numberPointWidthBuilder =
TextBlockUtils.defaultNumberPointWidthBuilder,
Expand All @@ -198,6 +207,7 @@ class DefaultListBlockStyle extends DefaultTextBlockStyle {
HorizontalSpacing? horizontalSpacing,
VerticalSpacing? verticalSpacing,
VerticalSpacing? lineSpacing,
EdgeInsets? contentPadding,
BoxDecoration? decoration,
QuillCheckboxBuilder? checkboxUIBuilder,
LeadingBlockIndentWidth? indentWidthBuilder,
Expand All @@ -210,6 +220,7 @@ class DefaultListBlockStyle extends DefaultTextBlockStyle {
lineSpacing ?? this.lineSpacing,
decoration ?? this.decoration,
checkboxUIBuilder ?? this.checkboxUIBuilder,
contentPadding: contentPadding ?? this.contentPadding,
indentWidthBuilder: indentWidthBuilder ?? this.indentWidthBuilder,
numberPointWidthBuilder:
numberPointWidthBuilder ?? this.numberPointWidthBuilder,
Expand Down
17 changes: 16 additions & 1 deletion lib/src/editor/widgets/text/text_block.dart
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ class EditableTextBlock extends StatelessWidget {
scrollBottomInset: scrollBottomInset,
decoration:
_getDecorationForBlock(block, defaultStyles) ?? const BoxDecoration(),
contentPadding: contentPadding,
contentPadding:
_getContentPaddingForBlock(block, defaultStyles) ?? contentPadding,
children: _buildChildren(context, indentLevelCounts, clearIndents),
);
}
Expand Down Expand Up @@ -156,6 +157,20 @@ class EditableTextBlock extends StatelessWidget {
return null;
}

EdgeInsets? _getContentPaddingForBlock(
Block node,
DefaultStyles? defaultStyles,
) {
final attrs = block.style.attributes;
if (attrs.containsKey(Attribute.blockQuote.key)) {
return defaultStyles?.quote?.contentPadding;
}
if (attrs.containsKey(Attribute.codeBlock.key)) {
return defaultStyles?.code?.contentPadding;
}
return null;
}

List<Widget> _buildChildren(
BuildContext context,
Map<int, int> indentLevelCounts,
Expand Down