From 2c9bbcf8e9325b663e1980b86b5c24028c103a5c Mon Sep 17 00:00:00 2001 From: Xin Yao Date: Thu, 19 Aug 2021 01:32:08 -0700 Subject: [PATCH] Rename StyleBuilder to CustomStyleBuilder --- lib/src/widgets/delegate.dart | 3 ++- lib/src/widgets/editor.dart | 6 +++--- lib/src/widgets/raw_editor.dart | 8 ++++---- lib/src/widgets/text_block.dart | 6 +++--- lib/src/widgets/text_line.dart | 17 ++++++++++------- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/src/widgets/delegate.dart b/lib/src/widgets/delegate.dart index 0c9c8629..fa03c9a6 100644 --- a/lib/src/widgets/delegate.dart +++ b/lib/src/widgets/delegate.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import '../../flutter_quill.dart'; import '../models/documents/nodes/leaf.dart'; import 'editor.dart'; @@ -10,7 +11,7 @@ import 'text_selection.dart'; typedef EmbedBuilder = Widget Function( BuildContext context, Embed node, bool readOnly); -typedef StyleBuilder = TextStyle Function(String attributeKey); +typedef CustomStyleBuilder = TextStyle Function(Attribute attribute); abstract class EditorTextSelectionGestureDetectorBuilderDelegate { GlobalKey getEditableTextKey(); diff --git a/lib/src/widgets/editor.dart b/lib/src/widgets/editor.dart index c76c98c1..d287e65c 100644 --- a/lib/src/widgets/editor.dart +++ b/lib/src/widgets/editor.dart @@ -252,7 +252,7 @@ class QuillEditor extends StatefulWidget { this.onSingleLongTapMoveUpdate, this.onSingleLongTapEnd, this.embedBuilder = _defaultEmbedBuilder, - this.styleBuilder, + this.customStyleBuilder, Key? key}); factory QuillEditor.basic({ @@ -312,7 +312,7 @@ class QuillEditor extends StatefulWidget { onSingleLongTapEnd; final EmbedBuilder embedBuilder; - final StyleBuilder? styleBuilder; + final CustomStyleBuilder? customStyleBuilder; @override _QuillEditorState createState() => _QuillEditorState(); @@ -417,7 +417,7 @@ class _QuillEditorState extends State widget.enableInteractiveSelection, widget.scrollPhysics, widget.embedBuilder, - widget.styleBuilder, + widget.customStyleBuilder, ), ); } diff --git a/lib/src/widgets/raw_editor.dart b/lib/src/widgets/raw_editor.dart index 2d121748..1f350646 100644 --- a/lib/src/widgets/raw_editor.dart +++ b/lib/src/widgets/raw_editor.dart @@ -57,7 +57,7 @@ class RawEditor extends StatefulWidget { this.enableInteractiveSelection, this.scrollPhysics, this.embedBuilder, - this.styleBuilder, + this.customStyleBuilder, ) : assert(maxHeight == null || maxHeight > 0, 'maxHeight cannot be null'), assert(minHeight == null || minHeight >= 0, 'minHeight cannot be null'), assert(maxHeight == null || minHeight == null || maxHeight >= minHeight, @@ -90,7 +90,7 @@ class RawEditor extends StatefulWidget { final bool enableInteractiveSelection; final ScrollPhysics? scrollPhysics; final EmbedBuilder embedBuilder; - final StyleBuilder? styleBuilder; + final CustomStyleBuilder? customStyleBuilder; @override State createState() => RawEditorState(); } @@ -249,7 +249,7 @@ class RawEditorState extends EditorState indentLevelCounts: indentLevelCounts, onCheckboxTap: _handleCheckboxTap, readOnly: widget.readOnly, - styleBuilder: widget.styleBuilder); + customStyleBuilder: widget.customStyleBuilder); result.add(editableTextBlock); } else { throw StateError('Unreachable.'); @@ -264,7 +264,7 @@ class RawEditorState extends EditorState line: node, textDirection: _textDirection, embedBuilder: widget.embedBuilder, - styleBuilder: widget.styleBuilder, + customStyleBuilder: widget.customStyleBuilder, styles: _styles!, readOnly: widget.readOnly, ); diff --git a/lib/src/widgets/text_block.dart b/lib/src/widgets/text_block.dart index dc49e3ed..e668d30b 100644 --- a/lib/src/widgets/text_block.dart +++ b/lib/src/widgets/text_block.dart @@ -63,7 +63,7 @@ class EditableTextBlock extends StatelessWidget { required this.indentLevelCounts, required this.onCheckboxTap, required this.readOnly, - this.styleBuilder, + this.customStyleBuilder, Key? key}); final Block block; @@ -77,7 +77,7 @@ class EditableTextBlock extends StatelessWidget { final bool hasFocus; final EdgeInsets? contentPadding; final EmbedBuilder embedBuilder; - final StyleBuilder? styleBuilder; + final CustomStyleBuilder? customStyleBuilder; final CursorCont cursorCont; final Map indentLevelCounts; final Function(int, bool) onCheckboxTap; @@ -125,7 +125,7 @@ class EditableTextBlock extends StatelessWidget { line: line, textDirection: textDirection, embedBuilder: embedBuilder, - styleBuilder: styleBuilder, + customStyleBuilder: customStyleBuilder, styles: styles!, readOnly: readOnly, ), diff --git a/lib/src/widgets/text_line.dart b/lib/src/widgets/text_line.dart index 65a661b5..44715f6e 100644 --- a/lib/src/widgets/text_line.dart +++ b/lib/src/widgets/text_line.dart @@ -27,7 +27,7 @@ class TextLine extends StatelessWidget { required this.styles, required this.readOnly, this.textDirection, - this.styleBuilder, + this.customStyleBuilder, Key? key, }) : super(key: key); @@ -36,7 +36,7 @@ class TextLine extends StatelessWidget { final EmbedBuilder embedBuilder; final DefaultStyles styles; final bool readOnly; - final StyleBuilder? styleBuilder; + final CustomStyleBuilder? customStyleBuilder; @override Widget build(BuildContext context) { @@ -158,13 +158,16 @@ class TextLine extends StatelessWidget { TextStyle _applyCustomAttributes( TextStyle textStyle, Map attributes) { - if (styleBuilder == null) { + if (customStyleBuilder == null) { return textStyle; } - attributes.keys.where((key) => !attributes.containsKey(key)).forEach((key) { - /// Custom Attribute - final customAttr = styleBuilder!.call(key); - textStyle = textStyle.merge(customAttr); + attributes.keys.forEach((key) { + final attr = attributes[key]; + if (attr != null) { + /// Custom Attribute + final customAttr = customStyleBuilder!.call(attr); + textStyle = textStyle.merge(customAttr); + } }); return textStyle; }