diff --git a/lib/flutter_quill.dart b/lib/flutter_quill.dart index 92e481c7..5e247d9a 100644 --- a/lib/flutter_quill.dart +++ b/lib/flutter_quill.dart @@ -1 +1,2 @@ library flutter_quill; +export 'package:tuple/tuple.dart'; diff --git a/lib/widgets/default_styles.dart b/lib/widgets/default_styles.dart index cef0011b..c008b6cd 100644 --- a/lib/widgets/default_styles.dart +++ b/lib/widgets/default_styles.dart @@ -59,25 +59,27 @@ class DefaultStyles { final DefaultTextBlockStyle code; final DefaultTextBlockStyle indent; final DefaultTextBlockStyle align; - - DefaultStyles( - {this.h1, - this.h2, - this.h3, - this.paragraph, - this.bold, - this.italic, - this.underline, - this.strikeThrough, - this.link, - this.lists, - this.quote, - this.code, - this.indent, - this.align, - this.sizeSmall, - this.sizeLarge, - this.sizeHuge}); + final DefaultTextBlockStyle textBlockStyle; + DefaultStyles({ + this.h1, + this.h2, + this.h3, + this.paragraph, + this.bold, + this.italic, + this.underline, + this.strikeThrough, + this.link, + this.lists, + this.quote, + this.code, + this.indent, + this.align, + this.sizeSmall, + this.sizeLarge, + this.sizeHuge, + this.textBlockStyle, + }); static DefaultStyles getInstance(BuildContext context) { ThemeData themeData = Theme.of(context); @@ -174,7 +176,9 @@ class DefaultStyles { baseStyle, Tuple2(0.0, 0.0), Tuple2(0.0, 0.0), null), sizeSmall: TextStyle(fontSize: 10.0), sizeLarge: TextStyle(fontSize: 18.0), - sizeHuge: TextStyle(fontSize: 22.0)); + sizeHuge: TextStyle(fontSize: 22.0), + textBlockStyle: DefaultTextBlockStyle(baseStyle, Tuple2(0.0, 0.0), Tuple2(32.0, 0.0), null) + ); } DefaultStyles merge(DefaultStyles other) { @@ -195,6 +199,8 @@ class DefaultStyles { align: other.align ?? this.align, sizeSmall: other.sizeSmall ?? this.sizeSmall, sizeLarge: other.sizeLarge ?? this.sizeLarge, - sizeHuge: other.sizeHuge ?? this.sizeHuge); + sizeHuge: other.sizeHuge ?? this.sizeHuge, + textBlockStyle: other.textBlockStyle??this.textBlockStyle, + ); } } diff --git a/lib/widgets/raw_editor.dart b/lib/widgets/raw_editor.dart index 4e890744..b9379413 100644 --- a/lib/widgets/raw_editor.dart +++ b/lib/widgets/raw_editor.dart @@ -604,7 +604,9 @@ class RawEditorState extends EditorState : null, widget.embedBuilder, _cursorCont, - indentLevelCounts); + indentLevelCounts, + widget.styleBuilder, + ); result.add(editableTextBlock); } else { throw StateError('Unreachable.'); diff --git a/lib/widgets/text_block.dart b/lib/widgets/text_block.dart index f0bc6487..24c3e267 100644 --- a/lib/widgets/text_block.dart +++ b/lib/widgets/text_block.dart @@ -58,6 +58,7 @@ class EditableTextBlock extends StatelessWidget { final bool hasFocus; final EdgeInsets contentPadding; final EmbedBuilder embedBuilder; + final StyleBuilder styleBuilder; final CursorCont cursorCont; final Map indentLevelCounts; @@ -73,7 +74,7 @@ class EditableTextBlock extends StatelessWidget { this.contentPadding, this.embedBuilder, this.cursorCont, - this.indentLevelCounts) + this.indentLevelCounts, this.styleBuilder) : assert(hasFocus != null), assert(embedBuilder != null), assert(cursorCont != null); @@ -114,14 +115,15 @@ class EditableTextBlock extends StatelessWidget { index++; EditableTextLine editableTextLine = EditableTextLine( line, - _buildLeading(context, line, index, indentLevelCounts, count), + Center(child: _buildLeading(context, line, index, indentLevelCounts, count)), TextLine( line: line, textDirection: textDirection, embedBuilder: embedBuilder, + styleBuilder:styleBuilder, styles: styles, ), - _getIndentWidth(), + _getIndentWidth(defaultStyles), _getSpacingForLine(line, index, count, defaultStyles), textDirection, textSelection, @@ -185,9 +187,9 @@ class EditableTextBlock extends StatelessWidget { return null; } - double _getIndentWidth() { + double _getIndentWidth(DefaultStyles defaultStyles) { Map attrs = block.style.attributes; - + double minimumIndent = defaultStyles?.textBlockStyle?.lineSpacing?.item1??0; Attribute indent = attrs[Attribute.indent.key]; double extraIndent = 0.0; if (indent != null && indent.value != null) { @@ -195,10 +197,10 @@ class EditableTextBlock extends StatelessWidget { } if (attrs.containsKey(Attribute.blockQuote.key)) { - return 16.0 + extraIndent; + return minimumIndent + extraIndent; } - return 32.0 + extraIndent; + return minimumIndent + extraIndent; } Tuple2 _getSpacingForLine(