From 387b906e437bbc556a91bc4c5c4327a9a45d975f Mon Sep 17 00:00:00 2001 From: Aleksei <130981115+MacDeveloper1@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:10:53 +0100 Subject: [PATCH] Restore support of `QuillToolbarLinkStyleButton2` --- .../toolbar/toolbar_configurations.dart | 19 +++++++++++++++++++ .../widgets/toolbar/buttons/link_style2.dart | 1 - lib/src/widgets/toolbar/toolbar.dart | 19 +++++++++++++------ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/src/models/config/toolbar/toolbar_configurations.dart b/lib/src/models/config/toolbar/toolbar_configurations.dart index 9d62ebaf..e4ccf4ad 100644 --- a/lib/src/models/config/toolbar/toolbar_configurations.dart +++ b/lib/src/models/config/toolbar/toolbar_configurations.dart @@ -15,6 +15,7 @@ import 'buttons/font_size.dart'; import 'buttons/history.dart'; import 'buttons/indent.dart'; import 'buttons/link_style.dart'; +import 'buttons/link_style2.dart'; import 'buttons/search.dart'; import 'buttons/select_alignment.dart'; import 'buttons/select_header_style.dart'; @@ -32,6 +33,7 @@ export './buttons/font_size.dart'; export './buttons/history.dart'; export './buttons/indent.dart'; export './buttons/link_style.dart'; +export './buttons/link_style2.dart'; export './buttons/search.dart'; export './buttons/select_alignment.dart'; export './buttons/select_header_style.dart'; @@ -50,6 +52,17 @@ const double kIconButtonFactor = 1.77; /// The horizontal margin between the contents of each toolbar section. const double kToolbarSectionSpacing = 4; +enum LinkStyleType { + /// Defines the original [QuillToolbarLinkStyleButton]. + original, + + /// Defines the alternative [QuillToolbarLinkStyleButton2]. + alternative; + + bool get isOriginal => this == LinkStyleType.original; + bool get isAlternative => this == LinkStyleType.alternative; +} + /// The configurations for the toolbar widget of flutter quill @immutable class QuillToolbarConfigurations extends QuillSharedToolbarProperties { @@ -91,6 +104,7 @@ class QuillToolbarConfigurations extends QuillSharedToolbarProperties { this.showSearchButton = true, this.showSubscript = true, this.showSuperscript = true, + this.linkStyleType = LinkStyleType.original, super.customButtons = const [], /// The decoration to use for the toolbar. @@ -191,6 +205,9 @@ class QuillToolbarConfigurations extends QuillSharedToolbarProperties { ///shown when embedding an image, for example final QuillDialogTheme? dialogTheme; + /// Defines which dialog is used for applying link attribute. + final LinkStyleType linkStyleType; + @override List get props => [ buttonOptions, @@ -239,6 +256,7 @@ class QuillToolbarButtonOptions extends Equatable { this.selectHeaderStyleButtons = const QuillToolbarSelectHeaderStyleButtonsOptions(), this.linkStyle = const QuillToolbarLinkStyleButtonOptions(), + this.linkStyle2 = const QuillToolbarLinkStyleButton2Options(), this.customButtons = const QuillToolbarCustomButtonOptions(), }); @@ -284,6 +302,7 @@ class QuillToolbarButtonOptions extends Equatable { final QuillToolbarSelectHeaderStyleButtonsOptions selectHeaderStyleButtons; final QuillToolbarLinkStyleButtonOptions linkStyle; + final QuillToolbarLinkStyleButton2Options linkStyle2; final QuillToolbarCustomButtonOptions customButtons; diff --git a/lib/src/widgets/toolbar/buttons/link_style2.dart b/lib/src/widgets/toolbar/buttons/link_style2.dart index 52d921d4..4f833196 100644 --- a/lib/src/widgets/toolbar/buttons/link_style2.dart +++ b/lib/src/widgets/toolbar/buttons/link_style2.dart @@ -6,7 +6,6 @@ import '../../../../extensions.dart' show UtilityWidgets, AutoFormatMultipleLinksRule; import '../../../extensions/quill_provider.dart'; import '../../../l10n/extensions/localizations.dart'; -import '../../../models/config/toolbar/buttons/link_style2.dart'; import '../../../models/documents/attribute.dart'; import '../../../models/themes/quill_dialog_theme.dart'; import '../../../models/themes/quill_icon_theme.dart'; diff --git a/lib/src/widgets/toolbar/toolbar.dart b/lib/src/widgets/toolbar/toolbar.dart index 85001d83..8d7a6fc8 100644 --- a/lib/src/widgets/toolbar/toolbar.dart +++ b/lib/src/widgets/toolbar/toolbar.dart @@ -393,12 +393,19 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget { space: configurations.sectionDividerSpace, ), if (configurations.showLink) ...[ - QuillToolbarLinkStyleButton( - controller: toolbarConfigurations - .buttonOptions.linkStyle.controller ?? - globalController, - options: toolbarConfigurations.buttonOptions.linkStyle, - ), + toolbarConfigurations.linkStyleType.isOriginal + ? QuillToolbarLinkStyleButton( + controller: toolbarConfigurations + .buttonOptions.linkStyle.controller ?? + globalController, + options: toolbarConfigurations.buttonOptions.linkStyle, + ) + : QuillToolbarLinkStyleButton2( + controller: toolbarConfigurations + .buttonOptions.linkStyle2.controller ?? + globalController, + options: toolbarConfigurations.buttonOptions.linkStyle2, + ), spacerWidget, ], if (configurations.showSearchButton) ...[