From 0d39d9d4e91c4e467a65996562b8779c541b5397 Mon Sep 17 00:00:00 2001 From: Ellet Date: Tue, 5 Dec 2023 12:26:06 +0300 Subject: [PATCH] 3 --- .../lib/presentation/quill/quill_toolbar.dart | 24 ++++--- .../{base.dart => base_configurations.dart} | 0 ....dart => clear_format_configurations.dart} | 0 .../{color.dart => color_configurations.dart} | 2 +- ...dart => custom_button_configurations.dart} | 2 +- ...y.dart => font_family_configurations.dart} | 0 ...ize.dart => font_size_configurations.dart} | 0 ...story.dart => history_configurations.dart} | 0 ...indent.dart => indent_configurations.dart} | 2 +- ...2.dart => link_style2_configurations.dart} | 2 +- ...le.dart => link_style_configurations.dart} | 0 ...search.dart => search_configurations.dart} | 0 ...t => select_alignment_configurations.dart} | 2 +- ...> select_header_style_configurations.dart} | 0 ... => toggle_check_list_configurations.dart} | 0 ....dart => toggle_style_configurations.dart} | 2 +- .../simple_toolbar_configurations.dart | 66 ++++++++++--------- .../toolbar/toolbar_configurations.dart | 1 - .../toolbar_shared_configurations.dart | 4 -- lib/src/widgets/toolbar/base_toolbar.dart | 4 +- .../toolbar/buttons/font_family_button.dart | 2 +- .../toolbar/buttons/indent_button.dart | 2 +- .../buttons/select_alignment_buttons.dart | 54 +++++++++++++++ ...dart => select_alignment_old_buttons.dart} | 16 +++-- .../buttons/select_header_style_button.dart | 48 +++++++------- .../buttons/toggle_check_list_button.dart | 4 +- .../toolbar/buttons/toggle_style_button.dart | 13 +++- lib/src/widgets/toolbar/simple_toolbar.dart | 11 +--- 28 files changed, 159 insertions(+), 102 deletions(-) rename lib/src/models/config/toolbar/buttons/{base.dart => base_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{clear_format.dart => clear_format_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{color.dart => color_configurations.dart} (97%) rename lib/src/models/config/toolbar/buttons/{custom_button.dart => custom_button_configurations.dart} (95%) rename lib/src/models/config/toolbar/buttons/{font_family.dart => font_family_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{font_size.dart => font_size_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{history.dart => history_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{indent.dart => indent_configurations.dart} (94%) rename lib/src/models/config/toolbar/buttons/{link_style2.dart => link_style2_configurations.dart} (97%) rename lib/src/models/config/toolbar/buttons/{link_style.dart => link_style_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{search.dart => search_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{select_alignment.dart => select_alignment_configurations.dart} (98%) rename lib/src/models/config/toolbar/buttons/{select_header_style.dart => select_header_style_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{toggle_check_list.dart => toggle_check_list_configurations.dart} (100%) rename lib/src/models/config/toolbar/buttons/{toggle_style.dart => toggle_style_configurations.dart} (96%) create mode 100644 lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart rename lib/src/widgets/toolbar/buttons/{select_alignment_button.dart => select_alignment_old_buttons.dart} (95%) diff --git a/example/lib/presentation/quill/quill_toolbar.dart b/example/lib/presentation/quill/quill_toolbar.dart index bf79b5da..303e6587 100644 --- a/example/lib/presentation/quill/quill_toolbar.dart +++ b/example/lib/presentation/quill/quill_toolbar.dart @@ -10,7 +10,6 @@ import 'package:path/path.dart' as path; import 'package:path_provider/path_provider.dart' show getApplicationDocumentsDirectory; -import '../extensions/scaffold_messenger.dart'; import '../settings/cubit/settings_cubit.dart'; import 'embeds/timestamp_embed.dart'; @@ -106,12 +105,21 @@ class MyQuillToolbar extends StatelessWidget { multiRowsDisplay: false, buttonOptions: const QuillToolbarButtonOptions( base: QuillToolbarBaseButtonOptions( - globalIconSize: 30, + globalIconSize: 20, ), ), childrenBuilder: (context) { - final controller = context.requireQuillController; return [ + IconButton( + onPressed: () { + context.read().updateSettings( + state.copyWith(useCustomQuillToolbar: false)); + }, + icon: const Icon( + Icons.width_normal, + size: 16, + ), + ), QuillToolbarImageButton( controller: controller, options: const QuillToolbarImageButtonOptions(), @@ -238,7 +246,6 @@ class MyQuillToolbar extends StatelessWidget { QuillToolbarCustomButtonOptions( icon: const Icon(Icons.add_alarm_rounded), onPressed: () { - final controller = context.requireQuillController; controller.document .insert(controller.selection.extentOffset, '\n'); controller.updateSelection( @@ -282,13 +289,10 @@ class MyQuillToolbar extends StatelessWidget { }, ), QuillToolbarCustomButtonOptions( - icon: const Icon(Icons.ac_unit), + icon: const Icon(Icons.dashboard_customize), onPressed: () { - ScaffoldMessenger.of(context) - ..clearSnackBars() - ..showText( - 'Custom button!', - ); + context.read().updateSettings( + state.copyWith(useCustomQuillToolbar: true)); }, ), ], diff --git a/lib/src/models/config/toolbar/buttons/base.dart b/lib/src/models/config/toolbar/buttons/base_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/base.dart rename to lib/src/models/config/toolbar/buttons/base_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/clear_format.dart b/lib/src/models/config/toolbar/buttons/clear_format_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/clear_format.dart rename to lib/src/models/config/toolbar/buttons/clear_format_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/color.dart b/lib/src/models/config/toolbar/buttons/color_configurations.dart similarity index 97% rename from lib/src/models/config/toolbar/buttons/color.dart rename to lib/src/models/config/toolbar/buttons/color_configurations.dart index edb75142..04e45451 100644 --- a/lib/src/models/config/toolbar/buttons/color.dart +++ b/lib/src/models/config/toolbar/buttons/color_configurations.dart @@ -2,7 +2,7 @@ import 'package:flutter/widgets.dart' show Color; import '../../../../widgets/others/controller.dart'; import '../../quill_shared_configurations.dart' show QuillSharedConfigurations; -import 'base.dart'; +import 'base_configurations.dart'; class QuillToolbarColorButtonExtraOptions extends QuillToolbarBaseButtonExtraOptions { diff --git a/lib/src/models/config/toolbar/buttons/custom_button.dart b/lib/src/models/config/toolbar/buttons/custom_button_configurations.dart similarity index 95% rename from lib/src/models/config/toolbar/buttons/custom_button.dart rename to lib/src/models/config/toolbar/buttons/custom_button_configurations.dart index 9a862e83..3c6f3d7b 100644 --- a/lib/src/models/config/toolbar/buttons/custom_button.dart +++ b/lib/src/models/config/toolbar/buttons/custom_button_configurations.dart @@ -1,6 +1,6 @@ import 'package:flutter/widgets.dart' show VoidCallback, Widget; -import 'base.dart'; +import 'base_configurations.dart'; class QuillToolbarCustomButtonExtraOptions extends QuillToolbarBaseButtonExtraOptions { diff --git a/lib/src/models/config/toolbar/buttons/font_family.dart b/lib/src/models/config/toolbar/buttons/font_family_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/font_family.dart rename to lib/src/models/config/toolbar/buttons/font_family_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/font_size.dart b/lib/src/models/config/toolbar/buttons/font_size_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/font_size.dart rename to lib/src/models/config/toolbar/buttons/font_size_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/history.dart b/lib/src/models/config/toolbar/buttons/history_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/history.dart rename to lib/src/models/config/toolbar/buttons/history_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/indent.dart b/lib/src/models/config/toolbar/buttons/indent_configurations.dart similarity index 94% rename from lib/src/models/config/toolbar/buttons/indent.dart rename to lib/src/models/config/toolbar/buttons/indent_configurations.dart index 66700c71..4328796a 100644 --- a/lib/src/models/config/toolbar/buttons/indent.dart +++ b/lib/src/models/config/toolbar/buttons/indent_configurations.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; -import 'base.dart'; +import 'base_configurations.dart'; class QuillToolbarIndentButtonExtraOptions extends QuillToolbarBaseButtonExtraOptions { diff --git a/lib/src/models/config/toolbar/buttons/link_style2.dart b/lib/src/models/config/toolbar/buttons/link_style2_configurations.dart similarity index 97% rename from lib/src/models/config/toolbar/buttons/link_style2.dart rename to lib/src/models/config/toolbar/buttons/link_style2_configurations.dart index 75014143..6c977f64 100644 --- a/lib/src/models/config/toolbar/buttons/link_style2.dart +++ b/lib/src/models/config/toolbar/buttons/link_style2_configurations.dart @@ -1,7 +1,7 @@ import 'package:flutter/widgets.dart'; import '../../../themes/quill_dialog_theme.dart'; -import 'base.dart'; +import 'base_configurations.dart'; class QuillToolbarLinkStyleButton2ExtraOptions extends QuillToolbarBaseButtonExtraOptions { diff --git a/lib/src/models/config/toolbar/buttons/link_style.dart b/lib/src/models/config/toolbar/buttons/link_style_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/link_style.dart rename to lib/src/models/config/toolbar/buttons/link_style_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/search.dart b/lib/src/models/config/toolbar/buttons/search_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/search.dart rename to lib/src/models/config/toolbar/buttons/search_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/select_alignment.dart b/lib/src/models/config/toolbar/buttons/select_alignment_configurations.dart similarity index 98% rename from lib/src/models/config/toolbar/buttons/select_alignment.dart rename to lib/src/models/config/toolbar/buttons/select_alignment_configurations.dart index 0a90d350..7870e9a1 100644 --- a/lib/src/models/config/toolbar/buttons/select_alignment.dart +++ b/lib/src/models/config/toolbar/buttons/select_alignment_configurations.dart @@ -1,5 +1,5 @@ import 'package:flutter/widgets.dart' show IconData, immutable; -import 'base.dart'; +import 'base_configurations.dart'; class QuillToolbarSelectAlignmentButtonExtraOptions extends QuillToolbarBaseButtonExtraOptions { diff --git a/lib/src/models/config/toolbar/buttons/select_header_style.dart b/lib/src/models/config/toolbar/buttons/select_header_style_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/select_header_style.dart rename to lib/src/models/config/toolbar/buttons/select_header_style_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/toggle_check_list.dart b/lib/src/models/config/toolbar/buttons/toggle_check_list_configurations.dart similarity index 100% rename from lib/src/models/config/toolbar/buttons/toggle_check_list.dart rename to lib/src/models/config/toolbar/buttons/toggle_check_list_configurations.dart diff --git a/lib/src/models/config/toolbar/buttons/toggle_style.dart b/lib/src/models/config/toolbar/buttons/toggle_style_configurations.dart similarity index 96% rename from lib/src/models/config/toolbar/buttons/toggle_style.dart rename to lib/src/models/config/toolbar/buttons/toggle_style_configurations.dart index 0d58fdca..4ea2ea0f 100644 --- a/lib/src/models/config/toolbar/buttons/toggle_style.dart +++ b/lib/src/models/config/toolbar/buttons/toggle_style_configurations.dart @@ -2,7 +2,7 @@ import 'package:flutter/foundation.dart' show immutable; import 'package:flutter/widgets.dart' show Color; -import 'base.dart'; +import 'base_configurations.dart'; class QuillToolbarToggleStyleButtonExtraOptions extends QuillToolbarBaseButtonExtraOptions diff --git a/lib/src/models/config/toolbar/simple_toolbar_configurations.dart b/lib/src/models/config/toolbar/simple_toolbar_configurations.dart index e946a4f0..62a53ab5 100644 --- a/lib/src/models/config/toolbar/simple_toolbar_configurations.dart +++ b/lib/src/models/config/toolbar/simple_toolbar_configurations.dart @@ -7,39 +7,39 @@ import '../../../widgets/others/controller.dart'; import '../../../widgets/others/embeds.dart'; import '../../themes/quill_dialog_theme.dart'; import '../../themes/quill_icon_theme.dart'; -import 'buttons/base.dart'; -import 'buttons/clear_format.dart'; -import 'buttons/color.dart'; -import 'buttons/custom_button.dart'; -import 'buttons/font_family.dart'; -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'; -import 'buttons/toggle_check_list.dart'; -import 'buttons/toggle_style.dart'; +import 'buttons/base_configurations.dart'; +import 'buttons/clear_format_configurations.dart'; +import 'buttons/color_configurations.dart'; +import 'buttons/custom_button_configurations.dart'; +import 'buttons/font_family_configurations.dart'; +import 'buttons/font_size_configurations.dart'; +import 'buttons/history_configurations.dart'; +import 'buttons/indent_configurations.dart'; +import 'buttons/link_style_configurations.dart'; +import 'buttons/link_style2_configurations.dart'; +import 'buttons/search_configurations.dart'; +import 'buttons/select_alignment_configurations.dart'; +import 'buttons/select_header_style_configurations.dart'; +import 'buttons/toggle_check_list_configurations.dart'; +import 'buttons/toggle_style_configurations.dart'; import 'toolbar_shared_configurations.dart'; export './../../../widgets/toolbar/buttons/search/search_dialog.dart'; -export './buttons/base.dart'; -export './buttons/clear_format.dart'; -export './buttons/color.dart'; -export './buttons/custom_button.dart'; -export './buttons/font_family.dart'; -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'; -export './buttons/toggle_check_list.dart'; -export './buttons/toggle_style.dart'; +export 'buttons/base_configurations.dart'; +export 'buttons/clear_format_configurations.dart'; +export 'buttons/color_configurations.dart'; +export 'buttons/custom_button_configurations.dart'; +export 'buttons/font_family_configurations.dart'; +export 'buttons/font_size_configurations.dart'; +export 'buttons/history_configurations.dart'; +export 'buttons/indent_configurations.dart'; +export 'buttons/link_style_configurations.dart'; +export 'buttons/link_style2_configurations.dart'; +export 'buttons/search_configurations.dart'; +export 'buttons/select_alignment_configurations.dart'; +export 'buttons/select_header_style_configurations.dart'; +export 'buttons/toggle_check_list_configurations.dart'; +export 'buttons/toggle_style_configurations.dart'; /// The default size of the icon of a button. const double kDefaultIconSize = 18; @@ -73,6 +73,7 @@ class QuillSimpleToolbarConfigurations extends QuillSharedToolbarProperties { super.toolbarIconAlignment = WrapAlignment.center, super.toolbarIconCrossAlignment = WrapCrossAlignment.center, super.buttonOptions = const QuillToolbarButtonOptions(), + this.customButtons = const [], super.multiRowsDisplay = true, this.fontSizesValues, this.showDividers = true, @@ -107,7 +108,6 @@ class QuillSimpleToolbarConfigurations extends QuillSharedToolbarProperties { this.showSubscript = true, this.showSuperscript = true, this.linkStyleType = LinkStyleType.original, - super.customButtons = const [], /// The decoration to use for the toolbar. super.decoration, @@ -167,6 +167,9 @@ class QuillSimpleToolbarConfigurations extends QuillSharedToolbarProperties { /// ``` final Map? fontSizesValues; + /// List of custom buttons + final List customButtons; + final bool showDividers; final bool showFontFamily; final bool showFontSize; @@ -179,6 +182,7 @@ class QuillSimpleToolbarConfigurations extends QuillSharedToolbarProperties { final bool showColorButton; final bool showBackgroundColorButton; final bool showClearFormat; + final bool showAlignmentButtons; final bool showLeftAlignment; final bool showCenterAlignment; diff --git a/lib/src/models/config/toolbar/toolbar_configurations.dart b/lib/src/models/config/toolbar/toolbar_configurations.dart index 187a6117..15e675fd 100644 --- a/lib/src/models/config/toolbar/toolbar_configurations.dart +++ b/lib/src/models/config/toolbar/toolbar_configurations.dart @@ -14,7 +14,6 @@ class QuillToolbarConfigurations extends QuillSharedToolbarProperties { super.toolbarIconAlignment = WrapAlignment.center, super.toolbarIconCrossAlignment = WrapCrossAlignment.center, super.color, - super.customButtons = const [], super.sectionDividerColor, super.sectionDividerSpace, super.linkDialogAction, diff --git a/lib/src/models/config/toolbar/toolbar_shared_configurations.dart b/lib/src/models/config/toolbar/toolbar_shared_configurations.dart index d563f4df..166a4a95 100644 --- a/lib/src/models/config/toolbar/toolbar_shared_configurations.dart +++ b/lib/src/models/config/toolbar/toolbar_shared_configurations.dart @@ -13,7 +13,6 @@ abstract class QuillSharedToolbarProperties extends Equatable { this.toolbarIconAlignment = WrapAlignment.center, this.toolbarIconCrossAlignment = WrapCrossAlignment.center, this.color, - this.customButtons = const [], this.sectionDividerColor, this.sectionDividerSpace, this.linkDialogAction, @@ -36,9 +35,6 @@ abstract class QuillSharedToolbarProperties extends Equatable { /// is given. final Color? color; - /// List of custom buttons - final List customButtons; - /// The color to use when painting the toolbar section divider. /// /// If this is null, then the [DividerThemeData.color] is used. If that is diff --git a/lib/src/widgets/toolbar/base_toolbar.dart b/lib/src/widgets/toolbar/base_toolbar.dart index 59efda0c..f8bf5a09 100644 --- a/lib/src/widgets/toolbar/base_toolbar.dart +++ b/lib/src/widgets/toolbar/base_toolbar.dart @@ -6,7 +6,7 @@ import '../../l10n/widgets/localizations.dart'; import '../../models/config/toolbar/toolbar_configurations.dart'; import 'buttons/arrow_indicated_list_button.dart'; -export '../../models/config/toolbar/buttons/base.dart'; +export '../../models/config/toolbar/buttons/base_configurations.dart'; export '../../models/config/toolbar/simple_toolbar_configurations.dart'; export 'buttons/clear_format_button.dart'; export 'buttons/color/color_button.dart'; @@ -19,7 +19,7 @@ export 'buttons/link_style2_button.dart'; export 'buttons/link_style_button.dart'; export 'buttons/quill_icon_button.dart'; export 'buttons/search/search_button.dart'; -export 'buttons/select_alignment_button.dart'; +export 'buttons/select_alignment_old_buttons.dart'; export 'buttons/select_header_style_buttons.dart'; export 'buttons/toggle_check_list_button.dart'; export 'buttons/toggle_style_button.dart'; diff --git a/lib/src/widgets/toolbar/buttons/font_family_button.dart b/lib/src/widgets/toolbar/buttons/font_family_button.dart index 40c62990..b173a4f1 100644 --- a/lib/src/widgets/toolbar/buttons/font_family_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_family_button.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import '../../../../extensions.dart'; import '../../../extensions/quill_provider.dart'; import '../../../l10n/extensions/localizations.dart'; -import '../../../models/config/toolbar/buttons/font_family.dart'; +import '../../../models/config/toolbar/buttons/font_family_configurations.dart'; import '../../../models/documents/attribute.dart'; import '../../../models/documents/style.dart'; import '../../../models/themes/quill_icon_theme.dart'; diff --git a/lib/src/widgets/toolbar/buttons/indent_button.dart b/lib/src/widgets/toolbar/buttons/indent_button.dart index 4d81b5c7..4a35a571 100644 --- a/lib/src/widgets/toolbar/buttons/indent_button.dart +++ b/lib/src/widgets/toolbar/buttons/indent_button.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import '../../../extensions/quill_provider.dart'; import '../../../l10n/extensions/localizations.dart'; -import '../../../models/config/toolbar/buttons/indent.dart'; +import '../../../models/config/toolbar/buttons/indent_configurations.dart'; import '../../../models/themes/quill_icon_theme.dart'; import '../../others/controller.dart'; import '../base_toolbar.dart' diff --git a/lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart b/lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart new file mode 100644 index 00000000..51fe901b --- /dev/null +++ b/lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; + +import '../../../models/config/toolbar/buttons/select_alignment_configurations.dart'; +import '../../../models/config/toolbar/buttons/toggle_style_configurations.dart'; +import '../../../models/documents/attribute.dart'; +import '../../others/controller.dart'; +import 'toggle_style_button.dart'; + +enum _AlignmentOptions { + left(attribute: Attribute.leftAlignment), + center(attribute: Attribute.centerAlignment), + right(attribute: Attribute.rightAlignment), + justifyMinWidth(attribute: Attribute.justifyAlignment); + + const _AlignmentOptions({required this.attribute}); + + final Attribute attribute; +} + +class QuillToolbarSelectAlignmentButtons extends StatelessWidget { + const QuillToolbarSelectAlignmentButtons({ + required this.controller, + required this.options, + this.showLeftAlignment, + this.showCenterAlignment, + this.showRightAlignment, + this.showJustifyAlignment, + this.padding, + super.key, + }); + + final QuillController controller; + final QuillToolbarSelectAlignmentButtonOptions options; + + final bool? showLeftAlignment; + final bool? showCenterAlignment; + final bool? showRightAlignment; + final bool? showJustifyAlignment; + final EdgeInsetsGeometry? padding; + + @override + Widget build(BuildContext context) { + return Row( + mainAxisSize: MainAxisSize.min, + children: _AlignmentOptions.values + .map((e) => QuillToolbarToggleStyleButton( + options: const QuillToolbarToggleStyleButtonOptions(), + controller: controller, + attribute: e.attribute, + )) + .toList(), + ); + } +} diff --git a/lib/src/widgets/toolbar/buttons/select_alignment_button.dart b/lib/src/widgets/toolbar/buttons/select_alignment_old_buttons.dart similarity index 95% rename from lib/src/widgets/toolbar/buttons/select_alignment_button.dart rename to lib/src/widgets/toolbar/buttons/select_alignment_old_buttons.dart index 4d7f8bca..6cb5617b 100644 --- a/lib/src/widgets/toolbar/buttons/select_alignment_button.dart +++ b/lib/src/widgets/toolbar/buttons/select_alignment_old_buttons.dart @@ -10,8 +10,9 @@ import '../../../utils/widgets.dart'; import '../../others/controller.dart'; import '../base_toolbar.dart'; -class QuillToolbarSelectAlignmentButton extends StatefulWidget { - const QuillToolbarSelectAlignmentButton({ +@Deprecated('This button has been deprecated, use') +class QuillToolbarSelectAlignmentOldButtons extends StatefulWidget { + const QuillToolbarSelectAlignmentOldButtons({ required this.controller, required this.options, this.showLeftAlignment, @@ -32,12 +33,12 @@ class QuillToolbarSelectAlignmentButton extends StatefulWidget { final EdgeInsetsGeometry? padding; @override - QuillToolbarSelectAlignmentButtonState createState() => - QuillToolbarSelectAlignmentButtonState(); + QuillToolbarSelectAlignmentOldButtonsState createState() => + QuillToolbarSelectAlignmentOldButtonsState(); } -class QuillToolbarSelectAlignmentButtonState - extends State { +class QuillToolbarSelectAlignmentOldButtonsState + extends State { Attribute? _value; Style get _selectionStyle => controller.getSelectionStyle(); @@ -137,7 +138,8 @@ class QuillToolbarSelectAlignmentButtonState } @override - void didUpdateWidget(covariant QuillToolbarSelectAlignmentButton oldWidget) { + void didUpdateWidget( + covariant QuillToolbarSelectAlignmentOldButtons oldWidget) { super.didUpdateWidget(oldWidget); if (oldWidget.controller != controller) { oldWidget.controller.removeListener(_didChangeEditingValue); diff --git a/lib/src/widgets/toolbar/buttons/select_header_style_button.dart b/lib/src/widgets/toolbar/buttons/select_header_style_button.dart index 41dca31a..4016147d 100644 --- a/lib/src/widgets/toolbar/buttons/select_header_style_button.dart +++ b/lib/src/widgets/toolbar/buttons/select_header_style_button.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import '../../../../translations.dart'; -import '../../../models/config/toolbar/buttons/select_header_style.dart'; +import '../../../models/config/toolbar/buttons/select_header_style_configurations.dart'; import '../../../models/documents/attribute.dart'; import '../../others/controller.dart'; -enum QuillToolbarSelectHeaderStyleButtonOptions { +enum _HeaderStyleOptions { normal, headingOne, headingTwo, @@ -29,7 +29,7 @@ class QuillToolbarSelectHeaderStyleButton extends StatefulWidget { class _QuillToolbarSelectHeaderStyleButtonState extends State { - var _selectedItem = QuillToolbarSelectHeaderStyleButtonOptions.normal; + var _selectedItem = _HeaderStyleOptions.normal; @override void initState() { super.initState(); @@ -55,47 +55,43 @@ class _QuillToolbarSelectHeaderStyleButtonState Attribute.header; } - String _label(QuillToolbarSelectHeaderStyleButtonOptions value) { + String _label(_HeaderStyleOptions value) { final label = switch (value) { - QuillToolbarSelectHeaderStyleButtonOptions.normal => context.loc.normal, - QuillToolbarSelectHeaderStyleButtonOptions.headingOne => - context.loc.heading1, - QuillToolbarSelectHeaderStyleButtonOptions.headingTwo => - context.loc.heading2, - QuillToolbarSelectHeaderStyleButtonOptions.headingThree => - context.loc.heading3, + _HeaderStyleOptions.normal => context.loc.normal, + _HeaderStyleOptions.headingOne => context.loc.heading1, + _HeaderStyleOptions.headingTwo => context.loc.heading2, + _HeaderStyleOptions.headingThree => context.loc.heading3, }; return label; } - Attribute? getAttributeByOptionsItem( - QuillToolbarSelectHeaderStyleButtonOptions option) { + Attribute? getAttributeByOptionsItem(_HeaderStyleOptions option) { return switch (option) { - QuillToolbarSelectHeaderStyleButtonOptions.normal => Attribute.header, - QuillToolbarSelectHeaderStyleButtonOptions.headingOne => Attribute.h1, - QuillToolbarSelectHeaderStyleButtonOptions.headingTwo => Attribute.h2, - QuillToolbarSelectHeaderStyleButtonOptions.headingThree => Attribute.h3, + _HeaderStyleOptions.normal => Attribute.header, + _HeaderStyleOptions.headingOne => Attribute.h1, + _HeaderStyleOptions.headingTwo => Attribute.h2, + _HeaderStyleOptions.headingThree => Attribute.h3, }; } - QuillToolbarSelectHeaderStyleButtonOptions _getOptionsItemByAttribute( + _HeaderStyleOptions _getOptionsItemByAttribute( Attribute? attribute) { return switch (attribute) { - Attribute.h1 => QuillToolbarSelectHeaderStyleButtonOptions.headingOne, - Attribute.h2 => QuillToolbarSelectHeaderStyleButtonOptions.headingTwo, - Attribute.h2 => QuillToolbarSelectHeaderStyleButtonOptions.headingThree, - Attribute() => QuillToolbarSelectHeaderStyleButtonOptions.normal, - null => QuillToolbarSelectHeaderStyleButtonOptions.normal, + Attribute.h1 => _HeaderStyleOptions.headingOne, + Attribute.h2 => _HeaderStyleOptions.headingTwo, + Attribute.h2 => _HeaderStyleOptions.headingThree, + Attribute() => _HeaderStyleOptions.normal, + null => _HeaderStyleOptions.normal, }; } @override Widget build(BuildContext context) { - return DropdownButton( + return DropdownButton<_HeaderStyleOptions>( value: _selectedItem, - items: QuillToolbarSelectHeaderStyleButtonOptions.values + items: _HeaderStyleOptions.values .map( - (e) => DropdownMenuItem( + (e) => DropdownMenuItem<_HeaderStyleOptions>( value: e, child: Text(_label(e)), onTap: () { diff --git a/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart b/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart index db1980e5..2776cbc2 100644 --- a/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart +++ b/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import '../../../extensions/quill_provider.dart'; import '../../../l10n/extensions/localizations.dart'; -import '../../../models/config/toolbar/buttons/base.dart'; -import '../../../models/config/toolbar/buttons/toggle_check_list.dart'; +import '../../../models/config/toolbar/buttons/base_configurations.dart'; +import '../../../models/config/toolbar/buttons/toggle_check_list_configurations.dart'; import '../../../models/documents/attribute.dart'; import '../../../models/documents/style.dart'; import '../../../models/themes/quill_icon_theme.dart'; diff --git a/lib/src/widgets/toolbar/buttons/toggle_style_button.dart b/lib/src/widgets/toolbar/buttons/toggle_style_button.dart index 67982e28..4ed40f18 100644 --- a/lib/src/widgets/toolbar/buttons/toggle_style_button.dart +++ b/lib/src/widgets/toolbar/buttons/toggle_style_button.dart @@ -85,7 +85,7 @@ class QuillToolbarToggleStyleButtonState context.requireQuillToolbarBaseButtonOptions.iconTheme; } - (String?, IconData) get _defaultTooltipAndIconData { + (String, IconData) get _defaultTooltipAndIconData { switch (widget.attribute.key) { case 'bold': return (context.loc.bold, Icons.format_bold); @@ -115,6 +115,14 @@ class QuillToolbarToggleStyleButtonState return (context.loc.codeBlock, Icons.code); case 'blockquote': return (context.loc.quote, Icons.format_quote); + case 'align': + return switch (widget.attribute.value) { + 'left' => (context.loc.alignLeft, Icons.format_align_left), + 'right' => (context.loc.alignRight, Icons.format_align_right), + 'center' => (context.loc.alignCenter, Icons.format_align_center), + Object() => (context.loc.alignCenter, Icons.format_align_center), + null => (context.loc.alignCenter, Icons.format_align_center), + }; default: throw ArgumentError( 'Could not find the default tooltip for ' @@ -203,7 +211,8 @@ class QuillToolbarToggleStyleButtonState bool _getIsToggled(Map attrs) { if (widget.attribute.key == Attribute.list.key || - widget.attribute.key == Attribute.script.key) { + widget.attribute.key == Attribute.script.key || + widget.attribute.key == Attribute.align.key) { final attribute = attrs[widget.attribute.key]; if (attribute == null) { return false; diff --git a/lib/src/widgets/toolbar/simple_toolbar.dart b/lib/src/widgets/toolbar/simple_toolbar.dart index 57644056..094b6579 100644 --- a/lib/src/widgets/toolbar/simple_toolbar.dart +++ b/lib/src/widgets/toolbar/simple_toolbar.dart @@ -6,6 +6,7 @@ import '../../models/config/toolbar/toolbar_configurations.dart'; import '../../models/documents/attribute.dart'; import '../utils/provider.dart'; import 'base_toolbar.dart'; +import 'buttons/select_alignment_buttons.dart'; import 'buttons/select_header_style_button.dart'; class QuillSimpleToolbar extends StatelessWidget @@ -58,7 +59,6 @@ class QuillSimpleToolbar extends StatelessWidget toolbarSectionSpacing: configurations.toolbarSectionSpacing, toolbarIconAlignment: configurations.toolbarIconAlignment, toolbarIconCrossAlignment: configurations.toolbarIconCrossAlignment, - customButtons: configurations.customButtons, linkDialogAction: configurations.linkDialogAction, multiRowsDisplay: configurations.multiRowsDisplay, sectionDividerColor: configurations.sectionDividerColor, @@ -246,19 +246,12 @@ class QuillSimpleToolbar extends StatelessWidget space: configurations.sectionDividerSpace, ), if (configurations.showAlignmentButtons) ...[ - QuillToolbarSelectAlignmentButton( + QuillToolbarSelectAlignmentButtons( controller: toolbarConfigurations .buttonOptions.selectAlignmentButtons.controller ?? globalController, options: toolbarConfigurations .buttonOptions.selectAlignmentButtons, - // tooltips: Map.of(buttonTooltips) - // ..removeWhere((key, value) => ![ - // ToolbarButtons.leftAlignment, - // ToolbarButtons.centerAlignment, - // ToolbarButtons.rightAlignment, - // ToolbarButtons.justifyAlignment, - // ].contains(key)), showLeftAlignment: configurations.showLeftAlignment, showCenterAlignment: configurations.showCenterAlignment, showRightAlignment: configurations.showRightAlignment,