Skip to content

Commit 11c8300

Browse files
Restore use of alternative QuillToolbarLinkStyleButton2 widget (singerdmx#1547)
* Restore support of `QuillToolbarLinkStyleButton2` * Fix localization
1 parent df6e07d commit 11c8300

File tree

3 files changed

+51
-19
lines changed

3 files changed

+51
-19
lines changed

lib/src/models/config/toolbar/toolbar_configurations.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'buttons/font_size.dart';
1515
import 'buttons/history.dart';
1616
import 'buttons/indent.dart';
1717
import 'buttons/link_style.dart';
18+
import 'buttons/link_style2.dart';
1819
import 'buttons/search.dart';
1920
import 'buttons/select_alignment.dart';
2021
import 'buttons/select_header_style.dart';
@@ -32,6 +33,7 @@ export './buttons/font_size.dart';
3233
export './buttons/history.dart';
3334
export './buttons/indent.dart';
3435
export './buttons/link_style.dart';
36+
export './buttons/link_style2.dart';
3537
export './buttons/search.dart';
3638
export './buttons/select_alignment.dart';
3739
export './buttons/select_header_style.dart';
@@ -50,6 +52,17 @@ const double kIconButtonFactor = 1.77;
5052
/// The horizontal margin between the contents of each toolbar section.
5153
const double kToolbarSectionSpacing = 4;
5254

55+
enum LinkStyleType {
56+
/// Defines the original [QuillToolbarLinkStyleButton].
57+
original,
58+
59+
/// Defines the alternative [QuillToolbarLinkStyleButton2].
60+
alternative;
61+
62+
bool get isOriginal => this == LinkStyleType.original;
63+
bool get isAlternative => this == LinkStyleType.alternative;
64+
}
65+
5366
/// The configurations for the toolbar widget of flutter quill
5467
@immutable
5568
class QuillToolbarConfigurations extends QuillSharedToolbarProperties {
@@ -91,6 +104,7 @@ class QuillToolbarConfigurations extends QuillSharedToolbarProperties {
91104
this.showSearchButton = true,
92105
this.showSubscript = true,
93106
this.showSuperscript = true,
107+
this.linkStyleType = LinkStyleType.original,
94108
super.customButtons = const [],
95109

96110
/// The decoration to use for the toolbar.
@@ -191,6 +205,9 @@ class QuillToolbarConfigurations extends QuillSharedToolbarProperties {
191205
///shown when embedding an image, for example
192206
final QuillDialogTheme? dialogTheme;
193207

208+
/// Defines which dialog is used for applying link attribute.
209+
final LinkStyleType linkStyleType;
210+
194211
@override
195212
List<Object?> get props => [
196213
buttonOptions,
@@ -239,6 +256,7 @@ class QuillToolbarButtonOptions extends Equatable {
239256
this.selectHeaderStyleButtons =
240257
const QuillToolbarSelectHeaderStyleButtonsOptions(),
241258
this.linkStyle = const QuillToolbarLinkStyleButtonOptions(),
259+
this.linkStyle2 = const QuillToolbarLinkStyleButton2Options(),
242260
this.customButtons = const QuillToolbarCustomButtonOptions(),
243261
});
244262

@@ -284,6 +302,7 @@ class QuillToolbarButtonOptions extends Equatable {
284302
final QuillToolbarSelectHeaderStyleButtonsOptions selectHeaderStyleButtons;
285303

286304
final QuillToolbarLinkStyleButtonOptions linkStyle;
305+
final QuillToolbarLinkStyleButton2Options linkStyle2;
287306

288307
final QuillToolbarCustomButtonOptions customButtons;
289308

lib/src/widgets/toolbar/buttons/link_style2.dart

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import '../../../../extensions.dart'
66
show UtilityWidgets, AutoFormatMultipleLinksRule;
77
import '../../../extensions/quill_provider.dart';
88
import '../../../l10n/extensions/localizations.dart';
9-
import '../../../models/config/toolbar/buttons/link_style2.dart';
9+
import '../../../l10n/widgets/localizations.dart';
1010
import '../../../models/documents/attribute.dart';
1111
import '../../../models/themes/quill_dialog_theme.dart';
1212
import '../../../models/themes/quill_icon_theme.dart';
1313
import '../../controller.dart';
1414
import '../../link.dart';
15+
import '../../utils/provider.dart';
1516
import '../base_toolbar.dart';
1617

1718
/// Alternative version of [QuillToolbarLinkStyleButton]. This widget has more
@@ -172,18 +173,23 @@ class _QuillToolbarLinkStyleButton2State
172173
final textLink = await showDialog<QuillTextLink>(
173174
context: context,
174175
barrierColor: dialogBarrierColor,
175-
builder: (_) => LinkStyleDialog(
176-
dialogTheme: options.dialogTheme,
177-
text: initialTextLink.text,
178-
link: initialTextLink.link,
179-
constraints: options.constraints,
180-
addLinkLabel: options.addLinkLabel,
181-
editLinkLabel: options.editLinkLabel,
182-
linkColor: options.linkColor,
183-
childrenSpacing: options.childrenSpacing,
184-
autovalidateMode: options.autovalidateMode,
185-
validationMessage: options.validationMessage,
186-
buttonSize: options.buttonSize,
176+
builder: (_) => QuillProvider.value(
177+
value: context.requireQuillProvider,
178+
child: FlutterQuillLocalizationsWidget(
179+
child: LinkStyleDialog(
180+
dialogTheme: options.dialogTheme,
181+
text: initialTextLink.text,
182+
link: initialTextLink.link,
183+
constraints: options.constraints,
184+
addLinkLabel: options.addLinkLabel,
185+
editLinkLabel: options.editLinkLabel,
186+
linkColor: options.linkColor,
187+
childrenSpacing: options.childrenSpacing,
188+
autovalidateMode: options.autovalidateMode,
189+
validationMessage: options.validationMessage,
190+
buttonSize: options.buttonSize,
191+
),
192+
),
187193
),
188194
);
189195

lib/src/widgets/toolbar/toolbar.dart

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,19 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
393393
space: configurations.sectionDividerSpace,
394394
),
395395
if (configurations.showLink) ...[
396-
QuillToolbarLinkStyleButton(
397-
controller: toolbarConfigurations
398-
.buttonOptions.linkStyle.controller ??
399-
globalController,
400-
options: toolbarConfigurations.buttonOptions.linkStyle,
401-
),
396+
toolbarConfigurations.linkStyleType.isOriginal
397+
? QuillToolbarLinkStyleButton(
398+
controller: toolbarConfigurations
399+
.buttonOptions.linkStyle.controller ??
400+
globalController,
401+
options: toolbarConfigurations.buttonOptions.linkStyle,
402+
)
403+
: QuillToolbarLinkStyleButton2(
404+
controller: toolbarConfigurations
405+
.buttonOptions.linkStyle2.controller ??
406+
globalController,
407+
options: toolbarConfigurations.buttonOptions.linkStyle2,
408+
),
402409
spacerWidget,
403410
],
404411
if (configurations.showSearchButton) ...[

0 commit comments

Comments
 (0)