diff --git a/README.md b/README.md index 6bc0f26b..73195846 100644 --- a/README.md +++ b/README.md @@ -130,16 +130,18 @@ Instantiate a controller: QuillController _controller = QuillController.basic(); ``` -Use the `QuillEditor`, and `QuillToolbar` widgets, +Use the `QuillEditor`, and `QuillSimpleToolbar` widgets, and attach the `QuillController` to them: ```dart -QuillToolbar.simple( - configurations: QuillSimpleToolbarConfigurations(controller: _controller), +QuillSimpleToolbar( + controller: _controller, + configurations: QuillSimpleToolbarConfigurations(), ), Expanded( child: QuillEditor.basic( - configurations: QuillEditorConfigurations(controller: _controller), + controller: _controller, + configurations: const QuillEditorConfigurations(), ), ) ``` diff --git a/doc/attribute_introduction.md b/doc/attribute_introduction.md index b1704e01..e93ec8aa 100644 --- a/doc/attribute_introduction.md +++ b/doc/attribute_introduction.md @@ -85,8 +85,8 @@ On `QuillEditor` or `QuillEditorConfigurations` **doesn't exist** a param that l ##### The editor ```dart QuillEditor.basic( + controller: controller, configurations: QuillEditorConfigurations( - controller: controller, customStyleBuilder: (Attribute attribute) { if (attribute.key.equals(highlightKey)) { return TextStyle(color: Colors.black, backgroundColor: Colors.yellow); diff --git a/doc/configurations/custom_buttons.md b/doc/configurations/custom_buttons.md index 699b7b02..1bff246f 100644 --- a/doc/configurations/custom_buttons.md +++ b/doc/configurations/custom_buttons.md @@ -22,6 +22,7 @@ Each `QuillCustomButton` is used as part of the `customButtons` option as follow ```dart QuillToolbar.simple( + controller: _controller, configurations: QuillSimpleToolbarConfigurations( customButtons: [ QuillToolbarCustomButtonOptions( diff --git a/doc/custom_embed_blocks.md b/doc/custom_embed_blocks.md index 19f23ab5..d61b4faa 100644 --- a/doc/custom_embed_blocks.md +++ b/doc/custom_embed_blocks.md @@ -98,10 +98,8 @@ Future _addEditNote(BuildContext context, {Document? document}) async { ], ), content: QuillEditor.basic( - configurations: const QuillEditorConfigurations( - controller: quillEditorController, - readOnly: false, - ), + controller: quillEditorController, + configurations: const QuillEditorConfigurations(), ), ), ); diff --git a/doc/translation.md b/doc/translation.md index ec857bbb..76981a01 100644 --- a/doc/translation.md +++ b/doc/translation.md @@ -6,8 +6,8 @@ with: ```dart QuillToolbar.simple( + controller: _controller, configurations: QuillSimpleToolbarConfigurations( - controller: _controller, sharedConfigurations: const QuillSharedConfigurations( locale: Locale('de'), ), diff --git a/example/lib/screens/quill/my_quill_editor.dart b/example/lib/screens/quill/my_quill_editor.dart index e7115bcb..dee4691f 100644 --- a/example/lib/screens/quill/my_quill_editor.dart +++ b/example/lib/screens/quill/my_quill_editor.dart @@ -18,12 +18,14 @@ import 'embeds/timestamp_embed.dart'; class MyQuillEditor extends StatelessWidget { const MyQuillEditor({ + required this.controller, required this.configurations, required this.scrollController, required this.focusNode, super.key, }); + final QuillController controller; final QuillEditorConfigurations configurations; final ScrollController scrollController; final FocusNode focusNode; @@ -34,6 +36,7 @@ class MyQuillEditor extends StatelessWidget { return QuillEditor( scrollController: scrollController, focusNode: focusNode, + controller: controller, configurations: configurations.copyWith( elementOptions: const QuillEditorElementOptions( codeBlock: QuillEditorCodeBlockElementOptions( diff --git a/example/lib/screens/quill/my_quill_toolbar.dart b/example/lib/screens/quill/my_quill_toolbar.dart index 2808cff5..9c4a270c 100644 --- a/example/lib/screens/quill/my_quill_toolbar.dart +++ b/example/lib/screens/quill/my_quill_toolbar.dart @@ -203,8 +203,12 @@ class MyQuillToolbar extends StatelessWidget { ); } return QuillToolbar.simple( + controller: controller, + + /// configurations parameter: + /// Optional: if not provided will use the configuration set when the controller was instantiated. + /// Override: Provide parameter here to override the default configuration - useful if configuration will change. configurations: QuillSimpleToolbarConfigurations( - controller: controller, showAlignmentButtons: true, multiRowsDisplay: true, fontFamilyValues: { diff --git a/example/lib/screens/quill/quill_screen.dart b/example/lib/screens/quill/quill_screen.dart index 220ca8a7..4d74636f 100644 --- a/example/lib/screens/quill/quill_screen.dart +++ b/example/lib/screens/quill/quill_screen.dart @@ -33,7 +33,18 @@ class QuillScreen extends StatefulWidget { } class _QuillScreenState extends State { - final _controller = QuillController.basic(); + /// Instantiate the controller + final _controller = QuillController.basic( + configurations: const QuillControllerConfigurations( + + /// Set default editor configuration (Recommended if configuration will never change, but can be overridden when editor is built) + editorConfigurations: + QuillEditorConfigurations(padding: EdgeInsets.all(5)), + + /// Set default toolbar configuration (Recommended if configuration will never change, but can be overridden when toolbar is built) + toolbarConfigurations: QuillSimpleToolbarConfigurations( + searchButtonType: SearchButtonType.modern)), + ); final _editorFocusNode = FocusNode(); final _editorScrollController = ScrollController(); var _isReadOnly = false; @@ -101,9 +112,13 @@ class _QuillScreenState extends State { builder: (context) { return Expanded( child: MyQuillEditor( + controller: _controller, + + /// configurations parameter: + /// Optional: if not provided will use the configuration set when the controller was instantiated. + /// Override: Provide parameter here to override the default configuration - useful if configuration will change. configurations: QuillEditorConfigurations( sharedConfigurations: _sharedConfigurations, - controller: _controller, ), scrollController: _editorScrollController, focusNode: _editorFocusNode, diff --git a/example/lib/screens/simple/simple_screen.dart b/example/lib/screens/simple/simple_screen.dart index 8f23a663..15ab1e5e 100644 --- a/example/lib/screens/simple/simple_screen.dart +++ b/example/lib/screens/simple/simple_screen.dart @@ -18,8 +18,8 @@ class _SimpleScreenState extends State { body: Column( children: [ QuillToolbar.simple( - configurations: - QuillSimpleToolbarConfigurations(controller: _controller), + controller: _controller, + configurations: const QuillSimpleToolbarConfigurations(), ), Expanded( child: QuillEditor.basic( diff --git a/lib/src/controller/quill_controller.dart b/lib/src/controller/quill_controller.dart index 2f4ef071..6ccc4b90 100644 --- a/lib/src/controller/quill_controller.dart +++ b/lib/src/controller/quill_controller.dart @@ -19,6 +19,7 @@ import '../document/structs/doc_change.dart'; import '../document/style.dart'; import '../editor/config/editor_configurations.dart'; import '../editor_toolbar_controller_shared/clipboard/clipboard_service_provider.dart'; +import '../toolbar/config/simple_toolbar_configurations.dart'; import 'quill_controller_configurations.dart'; typedef ReplaceTextCallback = bool Function(int index, int len, Object? data); @@ -59,10 +60,25 @@ class QuillController extends ChangeNotifier { /// Fail safe: returns a default editor configuration. QuillEditorConfigurations? _editorConfigurations; QuillEditorConfigurations get editorConfigurations => - _editorConfigurations ?? configurations.editorConfigurations ?? const QuillEditorConfigurations(); + _editorConfigurations ?? + configurations.editorConfigurations ?? + const QuillEditorConfigurations(); set editorConfigurations(QuillEditorConfigurations? value) => _editorConfigurations = value; + /// Toolbar configurations + /// + /// Global default can be set in QuillControllerConfigurations. + /// Can be overridden by setting in QuillSimpleToolbar ctor. + /// Fail safe: returns a default toolbar configuration. + QuillSimpleToolbarConfigurations? _toolbarConfigurations; + QuillSimpleToolbarConfigurations get toolbarConfigurations => + _toolbarConfigurations ?? + configurations.toolbarConfigurations ?? + const QuillSimpleToolbarConfigurations(); + set toolbarConfigurations(QuillSimpleToolbarConfigurations? value) => + _toolbarConfigurations = value; + /// Document managed by this controller. Document _document; diff --git a/lib/src/controller/quill_controller_configurations.dart b/lib/src/controller/quill_controller_configurations.dart index b5c52493..d06db607 100644 --- a/lib/src/controller/quill_controller_configurations.dart +++ b/lib/src/controller/quill_controller_configurations.dart @@ -1,10 +1,11 @@ -import '../editor/config/editor_configurations.dart' show QuillEditorConfigurations; -import '../toolbar/config/toolbar_configurations.dart'; +import '../editor/config/editor_configurations.dart' + show QuillEditorConfigurations; +import '../toolbar/config/simple_toolbar_configurations.dart'; class QuillControllerConfigurations { const QuillControllerConfigurations( {this.editorConfigurations, - this.toolbarConfigurations, + this.toolbarConfigurations, this.onClipboardPaste, this.requireScriptFontFeatures = false}); @@ -12,7 +13,7 @@ class QuillControllerConfigurations { /// /// Future: will be changed to 'required final' final QuillEditorConfigurations? editorConfigurations; - final QuillToolbarConfigurations? toolbarConfigurations; + final QuillSimpleToolbarConfigurations? toolbarConfigurations; /// Callback when the user pastes and data has not already been processed /// diff --git a/lib/src/editor/config/editor_configurations.dart b/lib/src/editor/config/editor_configurations.dart index 932092a0..06639fce 100644 --- a/lib/src/editor/config/editor_configurations.dart +++ b/lib/src/editor/config/editor_configurations.dart @@ -24,7 +24,8 @@ class QuillEditorConfigurations extends Equatable { /// Important note for the maintainers /// When editing this class please update the [copyWith] function too. const QuillEditorConfigurations({ - @Deprecated('controller should be passed directly to the editor - this parameter will be removed in future versions.') + @Deprecated( + 'controller should be passed directly to the editor - this parameter will be removed in future versions.') this.controller, this.sharedConfigurations = const QuillSharedConfigurations(), this.scrollable = true, @@ -446,6 +447,7 @@ class QuillEditorConfigurations extends Equatable { }) { return QuillEditorConfigurations( sharedConfigurations: sharedConfigurations ?? this.sharedConfigurations, + // ignore: deprecated_member_use_from_same_package controller: controller ?? this.controller, placeholder: placeholder ?? this.placeholder, checkBoxReadOnly: checkBoxReadOnly ?? this.checkBoxReadOnly, diff --git a/lib/src/editor/editor.dart b/lib/src/editor/editor.dart index c14bb13b..2f92393e 100644 --- a/lib/src/editor/editor.dart +++ b/lib/src/editor/editor.dart @@ -121,11 +121,27 @@ abstract class RenderAbstractEditor implements TextLayoutMetrics { } class QuillEditor extends StatefulWidget { - -//TODO - sample code - factory QuillEditor ({ + /// Quick start guide: + /// + /// Instantiate a controller: + /// QuillController _controller = QuillController.basic(); + /// + /// Connect the controller to the `QuillEditor` and `QuillSimpleToolbar` widgets. + /// QuillSimpleToolbar( + /// controller: _controller, + /// configurations: const QuillSimpleToolbarConfigurations(), + /// ), + /// Expanded( + /// child: QuillEditor.basic( + /// controller: _controller, + /// configurations: const QuillEditorConfigurations(), + /// ), + /// ), + /// + factory QuillEditor({ required FocusNode focusNode, required ScrollController scrollController, + /// Controller and configurations are required /// /// Prefer: use controller and pass QuillEditorConfigurations in constructor for controller (using QuillControllerConfigurations). @@ -134,25 +150,31 @@ class QuillEditor extends StatefulWidget { QuillEditorConfigurations? configurations, }) { controller ??= configurations?.controller; - assert (controller != null, 'controller required. Provide controller directly (preferred) or indirectly through configurations (not recommended - will be removed in future versions).'); - controller ??= QuillController(document: Document(), selection: const TextSelection.collapsed(offset: 0)); + assert(controller != null, + 'controller required. Provide controller directly (preferred) or indirectly through configurations (not recommended - will be removed in future versions).'); + controller ??= QuillController( + document: Document(), + selection: const TextSelection.collapsed(offset: 0)); // controller ..editorConfigurations = configurations ..editorFocusNode = focusNode; // - return QuillEditor._(focusNode: focusNode, scrollController: scrollController, controller: controller); + return QuillEditor._( + focusNode: focusNode, + scrollController: scrollController, + controller: controller); } - const QuillEditor._({ - required this.focusNode, - required this.scrollController, - required this.controller - }); + const QuillEditor._( + {required this.focusNode, + required this.scrollController, + required this.controller}); factory QuillEditor.basic({ /// The controller for the quill editor widget of flutter quill QuillController? controller, + /// The configurations for the quill editor widget of flutter quill QuillEditorConfigurations? configurations, FocusNode? focusNode, @@ -170,7 +192,8 @@ class QuillEditor extends StatefulWidget { final QuillController controller; /// The configurations for the quill editor widget of flutter quill - QuillEditorConfigurations get configurations => controller.editorConfigurations; + QuillEditorConfigurations get configurations => + controller.editorConfigurations; /// Controls whether this editor has keyboard focus. final FocusNode focusNode; @@ -259,7 +282,6 @@ class QuillEditorState extends State final child = FlutterQuillLocalizationsWidget( child: QuillEditorProvider( controller: controller, - editorConfigurations: configurations, child: QuillEditorBuilderWidget( builder: configurations.builder, child: QuillRawEditor( diff --git a/lib/src/editor/provider.dart b/lib/src/editor/provider.dart index 2c11a0ce..9675104d 100644 --- a/lib/src/editor/provider.dart +++ b/lib/src/editor/provider.dart @@ -8,17 +8,23 @@ import 'config/editor_configurations.dart'; class QuillEditorProvider extends InheritedWidget { QuillEditorProvider({ required super.child, + /// Controller and configurations are required but should only be provided from one. /// /// Passing the controller as part of configurations is being deprecated and will be removed in the future. /// Prefer: use controller and set QuillEditorConfigurations in the controller. /// Current: use configurations and pass QuillController in constructor for configurations. QuillController? controller, - @Deprecated('editorConfigurations are no longer needed and will be removed in future versions. Set configurations in the controller') + @Deprecated( + 'editorConfigurations are no longer needed and will be removed in future versions. Set configurations in the controller') QuillEditorConfigurations? editorConfigurations, super.key, - }) : editorConfigurations = editorConfigurations ?? controller?.editorConfigurations ?? QuillEditorConfigurations(controller: controller!), - controller = controller ?? editorConfigurations?.controller ?? QuillController.basic(); + }) : editorConfigurations = editorConfigurations ?? + controller?.editorConfigurations ?? + const QuillEditorConfigurations(), + controller = controller ?? + editorConfigurations?.controller ?? + QuillController.basic(); final QuillController controller; final QuillEditorConfigurations editorConfigurations; diff --git a/lib/src/toolbar/base_toolbar.dart b/lib/src/toolbar/base_toolbar.dart index 72636f73..1634ca9e 100644 --- a/lib/src/toolbar/base_toolbar.dart +++ b/lib/src/toolbar/base_toolbar.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import '../../flutter_quill.dart' show QuillToolbarProvider, kDefaultToolbarSize; +import '../controller/quill_controller.dart'; import '../l10n/widgets/localizations.dart'; import 'config/simple_toolbar_configurations.dart'; import 'config/toolbar_configurations.dart'; @@ -40,8 +41,10 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget { }); static QuillSimpleToolbar simple( - {required QuillSimpleToolbarConfigurations configurations}) { + {QuillController? controller, + QuillSimpleToolbarConfigurations? configurations}) { return QuillSimpleToolbar( + controller: controller, configurations: configurations, ); } diff --git a/lib/src/toolbar/config/simple_toolbar_configurations.dart b/lib/src/toolbar/config/simple_toolbar_configurations.dart index 71e44119..08402c66 100644 --- a/lib/src/toolbar/config/simple_toolbar_configurations.dart +++ b/lib/src/toolbar/config/simple_toolbar_configurations.dart @@ -80,7 +80,9 @@ enum SearchButtonType { @immutable class QuillSimpleToolbarConfigurations extends QuillSharedToolbarProperties { const QuillSimpleToolbarConfigurations({ - required this.controller, + @Deprecated( + 'controller should be passed directly to the toolbar - this parameter will be removed in future versions.') + this.controller, super.sharedConfigurations, super.toolbarSectionSpacing = kToolbarSectionSpacing, super.toolbarIconAlignment = WrapAlignment.center, @@ -166,7 +168,7 @@ class QuillSimpleToolbarConfigurations extends QuillSharedToolbarProperties { final Map? fontFamilyValues; - final QuillController controller; + final QuillController? controller; /// By default it will be /// ```dart diff --git a/lib/src/toolbar/simple_toolbar.dart b/lib/src/toolbar/simple_toolbar.dart index 264792f5..a461df95 100644 --- a/lib/src/toolbar/simple_toolbar.dart +++ b/lib/src/toolbar/simple_toolbar.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import '../controller/quill_controller.dart'; import '../document/attribute.dart'; +import '../document/document.dart'; import 'base_toolbar.dart'; import 'buttons/alignment/select_alignment_buttons.dart'; import 'buttons/arrow_indicated_list_button.dart'; @@ -9,13 +11,40 @@ import 'simple_toolbar_provider.dart'; class QuillSimpleToolbar extends StatelessWidget implements PreferredSizeWidget { - const QuillSimpleToolbar({ - required this.configurations, + factory QuillSimpleToolbar({ + /// Controller and configurations are required + /// + /// Prefer: use controller and pass QuillEditorConfigurations in constructor for controller (using QuillControllerConfigurations). + /// Backward compatibility: use configurations and pass QuillController in constructor for configurations. (Will be removed in future versions.) + QuillSimpleToolbarConfigurations? configurations, + QuillController? controller, + Key? key, + }) { + controller ??= configurations?.controller; + assert(controller != null, + 'controller required. Provide controller directly (preferred) or indirectly through configurations (not recommended - will be removed in future versions).'); + controller ??= QuillController( + document: Document(), + selection: const TextSelection.collapsed(offset: 0)); + // + controller.toolbarConfigurations = configurations; + // + return QuillSimpleToolbar._( + controller: controller, + key: key, + ); + } + + const QuillSimpleToolbar._({ + required this.controller, super.key, }); + final QuillController controller; + /// The configurations for the toolbar widget of flutter quill - final QuillSimpleToolbarConfigurations configurations; + QuillSimpleToolbarConfigurations get configurations => + controller.toolbarConfigurations; double get _toolbarSize => configurations.toolbarSize * 1.4; @@ -30,7 +59,6 @@ class QuillSimpleToolbar extends StatelessWidget final globalIconSize = toolbarConfigurations.buttonOptions.base.iconSize; final axis = toolbarConfigurations.axis; - final globalController = configurations.controller; final divider = SizedBox( height: _toolbarSize, @@ -46,93 +74,93 @@ class QuillSimpleToolbar extends StatelessWidget QuillToolbarHistoryButton( isUndo: true, options: toolbarConfigurations.buttonOptions.undoHistory, - controller: globalController, + controller: controller, ), if (configurations.showRedo) QuillToolbarHistoryButton( isUndo: false, options: toolbarConfigurations.buttonOptions.redoHistory, - controller: globalController, + controller: controller, ), if (configurations.showFontFamily) QuillToolbarFontFamilyButton( options: toolbarConfigurations.buttonOptions.fontFamily, - controller: globalController, + controller: controller, ), if (configurations.showFontSize) QuillToolbarFontSizeButton( options: toolbarConfigurations.buttonOptions.fontSize, - controller: globalController, + controller: controller, ), if (configurations.showBoldButton) QuillToolbarToggleStyleButton( attribute: Attribute.bold, options: toolbarConfigurations.buttonOptions.bold, - controller: globalController, + controller: controller, ), if (configurations.showItalicButton) QuillToolbarToggleStyleButton( attribute: Attribute.italic, options: toolbarConfigurations.buttonOptions.italic, - controller: globalController, + controller: controller, ), if (configurations.showUnderLineButton) QuillToolbarToggleStyleButton( attribute: Attribute.underline, options: toolbarConfigurations.buttonOptions.underLine, - controller: globalController, + controller: controller, ), if (configurations.showStrikeThrough) QuillToolbarToggleStyleButton( attribute: Attribute.strikeThrough, options: toolbarConfigurations.buttonOptions.strikeThrough, - controller: globalController, + controller: controller, ), if (configurations.showInlineCode) QuillToolbarToggleStyleButton( attribute: Attribute.inlineCode, options: toolbarConfigurations.buttonOptions.inlineCode, - controller: globalController, + controller: controller, ), if (configurations.showSubscript) QuillToolbarToggleStyleButton( attribute: Attribute.subscript, options: toolbarConfigurations.buttonOptions.subscript, - controller: globalController, + controller: controller, ), if (configurations.showSuperscript) QuillToolbarToggleStyleButton( attribute: Attribute.superscript, options: toolbarConfigurations.buttonOptions.superscript, - controller: globalController, + controller: controller, ), if (configurations.showSmallButton) QuillToolbarToggleStyleButton( attribute: Attribute.small, options: toolbarConfigurations.buttonOptions.small, - controller: globalController, + controller: controller, ), if (configurations.showColorButton) QuillToolbarColorButton( - controller: globalController, + controller: controller, isBackground: false, options: toolbarConfigurations.buttonOptions.color, ), if (configurations.showBackgroundColorButton) QuillToolbarColorButton( options: toolbarConfigurations.buttonOptions.backgroundColor, - controller: globalController, + controller: controller, isBackground: true, ), if (configurations.showClearFormat) QuillToolbarClearFormatButton( - controller: globalController, + controller: controller, options: toolbarConfigurations.buttonOptions.clearFormat, ), if (theEmbedButtons != null) for (final builder in theEmbedButtons) builder( - globalController, + controller, globalIconSize ?? kDefaultIconSize, context.quillToolbarBaseButtonOptions?.iconTheme, configurations.dialogTheme), @@ -140,7 +168,7 @@ class QuillSimpleToolbar extends StatelessWidget [ if (configurations.showAlignmentButtons) QuillToolbarSelectAlignmentButtons( - controller: globalController, + controller: controller, options: toolbarConfigurations .buttonOptions.selectAlignmentButtons .copyWith( @@ -154,26 +182,26 @@ class QuillSimpleToolbar extends StatelessWidget QuillToolbarToggleStyleButton( attribute: Attribute.rtl, options: toolbarConfigurations.buttonOptions.direction, - controller: globalController, + controller: controller, ), ], [ if (configurations.showLineHeightButton) QuillToolbarSelectLineHeightStyleDropdownButton( - controller: globalController, + controller: controller, options: toolbarConfigurations .buttonOptions.selectLineHeightStyleDropdownButton, ), if (configurations.showHeaderStyle) ...[ if (configurations.headerStyleType.isOriginal) QuillToolbarSelectHeaderStyleDropdownButton( - controller: globalController, + controller: controller, options: toolbarConfigurations .buttonOptions.selectHeaderStyleDropdownButton, ) else QuillToolbarSelectHeaderStyleButtons( - controller: globalController, + controller: controller, options: toolbarConfigurations .buttonOptions.selectHeaderStyleButtons, ), @@ -184,42 +212,42 @@ class QuillSimpleToolbar extends StatelessWidget QuillToolbarToggleStyleButton( attribute: Attribute.ol, options: toolbarConfigurations.buttonOptions.listNumbers, - controller: globalController, + controller: controller, ), if (configurations.showListBullets) QuillToolbarToggleStyleButton( attribute: Attribute.ul, options: toolbarConfigurations.buttonOptions.listBullets, - controller: globalController, + controller: controller, ), if (configurations.showListCheck) QuillToolbarToggleCheckListButton( options: toolbarConfigurations.buttonOptions.toggleCheckList, - controller: globalController, + controller: controller, ), if (configurations.showCodeBlock) QuillToolbarToggleStyleButton( attribute: Attribute.codeBlock, options: toolbarConfigurations.buttonOptions.codeBlock, - controller: globalController, + controller: controller, ), ], [ if (configurations.showQuote) QuillToolbarToggleStyleButton( options: toolbarConfigurations.buttonOptions.quote, - controller: globalController, + controller: controller, attribute: Attribute.blockQuote, ), if (configurations.showIndent) QuillToolbarIndentButton( - controller: globalController, + controller: controller, isIncrease: true, options: toolbarConfigurations.buttonOptions.indentIncrease, ), if (configurations.showIndent) QuillToolbarIndentButton( - controller: globalController, + controller: controller, isIncrease: false, options: toolbarConfigurations.buttonOptions.indentDecrease, ), @@ -228,40 +256,40 @@ class QuillSimpleToolbar extends StatelessWidget if (configurations.showLink) toolbarConfigurations.linkStyleType.isOriginal ? QuillToolbarLinkStyleButton( - controller: globalController, + controller: controller, options: toolbarConfigurations.buttonOptions.linkStyle, ) : QuillToolbarLinkStyleButton2( - controller: globalController, + controller: controller, options: toolbarConfigurations.buttonOptions.linkStyle2, ), if (configurations.showSearchButton) switch (configurations.searchButtonType) { SearchButtonType.legacy => QuillToolbarLegacySearchButton( - controller: globalController, + controller: controller, options: toolbarConfigurations.buttonOptions.search, ), SearchButtonType.modern => QuillToolbarSearchButton( - controller: globalController, + controller: controller, options: toolbarConfigurations.buttonOptions.search, ), }, if (configurations.showClipboardCut) QuillToolbarClipboardButton( options: toolbarConfigurations.buttonOptions.clipboardCut, - controller: globalController, + controller: controller, clipboardAction: ClipboardAction.cut, ), if (configurations.showClipboardCopy) QuillToolbarClipboardButton( options: toolbarConfigurations.buttonOptions.clipboardCopy, - controller: globalController, + controller: controller, clipboardAction: ClipboardAction.copy, ), if (configurations.showClipboardPaste) QuillToolbarClipboardButton( options: toolbarConfigurations.buttonOptions.clipboardPaste, - controller: globalController, + controller: controller, clipboardAction: ClipboardAction.paste, ), ], @@ -269,7 +297,7 @@ class QuillSimpleToolbar extends StatelessWidget for (final customButton in configurations.customButtons) QuillToolbarCustomButton( options: customButton, - controller: globalController, + controller: controller, ), ], ]; diff --git a/test/bug_fix_test.dart b/test/bug_fix_test.dart index 42f5a93e..e1a72823 100644 --- a/test/bug_fix_test.dart +++ b/test/bug_fix_test.dart @@ -19,10 +19,10 @@ void main() { MaterialApp( home: Scaffold( body: QuillSimpleToolbar( - configurations: QuillSimpleToolbarConfigurations( - controller: controller, + controller: controller, + configurations: const QuillSimpleToolbarConfigurations( showRedo: false, - customButtons: const [ + customButtons: [ QuillToolbarCustomButtonOptions( tooltip: tooltip, ) diff --git a/test/editor/editor_test.dart b/test/editor/editor_test.dart index f95ebfcf..8f8d1051 100644 --- a/test/editor/editor_test.dart +++ b/test/editor/editor_test.dart @@ -27,8 +27,8 @@ void main() { controller: controller, // ignore: avoid_redundant_argument_values configurations: const QuillEditorConfigurations( - // ignore: avoid_redundant_argument_values - ), + // ignore: avoid_redundant_argument_values + ), ), ), );