Refactor toolbar class names

pull/1452/head
Ahmed Hnewa 2 years ago
parent f4266ac326
commit 7aab2add96
No known key found for this signature in database
GPG Key ID: C488CC70BBCEF0D1
  1. 2
      flutter_quill_extensions/lib/embeds/toolbar/camera_button.dart
  2. 2
      flutter_quill_extensions/lib/embeds/toolbar/formula_button.dart
  3. 2
      flutter_quill_extensions/lib/embeds/toolbar/image_button.dart
  4. 2
      flutter_quill_extensions/lib/embeds/toolbar/media_button.dart
  5. 2
      flutter_quill_extensions/lib/embeds/toolbar/video_button.dart
  6. 11
      lib/src/widgets/toolbar/buttons/arrow_indicated_list.dart
  7. 12
      lib/src/widgets/toolbar/buttons/clear_format.dart
  8. 13
      lib/src/widgets/toolbar/buttons/color.dart
  9. 2
      lib/src/widgets/toolbar/buttons/custom_button.dart
  10. 0
      lib/src/widgets/toolbar/buttons/font_size.dart
  11. 2
      lib/src/widgets/toolbar/buttons/history.dart
  12. 11
      lib/src/widgets/toolbar/buttons/indent.dart
  13. 14
      lib/src/widgets/toolbar/buttons/link_style.dart
  14. 16
      lib/src/widgets/toolbar/buttons/link_style2.dart
  15. 4
      lib/src/widgets/toolbar/buttons/quill_icon.dart
  16. 6
      lib/src/widgets/toolbar/buttons/search.dart
  17. 12
      lib/src/widgets/toolbar/buttons/select_alignment.dart
  18. 14
      lib/src/widgets/toolbar/buttons/select_header_style.dart
  19. 12
      lib/src/widgets/toolbar/buttons/toggle_check_list.dart
  20. 14
      lib/src/widgets/toolbar/buttons/toggle_style.dart
  21. 50
      lib/src/widgets/toolbar/toolbar.dart
  22. 8
      test/bug_fix_test.dart

@ -53,7 +53,7 @@ class CameraButton extends StatelessWidget {
final iconFillColor = final iconFillColor =
iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor); iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor);
return QuillIconButton( return QuillToolbarIconButton(
icon: Icon(icon, size: iconSize, color: iconColor), icon: Icon(icon, size: iconSize, color: iconColor),
tooltip: tooltip, tooltip: tooltip,
highlightElevation: 0, highlightElevation: 0,

@ -34,7 +34,7 @@ class FormulaButton extends StatelessWidget {
final iconFillColor = final iconFillColor =
iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor); iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor);
return QuillIconButton( return QuillToolbarIconButton(
icon: Icon(icon, size: iconSize, color: iconColor), icon: Icon(icon, size: iconSize, color: iconColor),
tooltip: tooltip, tooltip: tooltip,
highlightElevation: 0, highlightElevation: 0,

@ -51,7 +51,7 @@ class ImageButton extends StatelessWidget {
final iconFillColor = final iconFillColor =
iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor); iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor);
return QuillIconButton( return QuillToolbarIconButton(
icon: Icon(icon, size: iconSize, color: iconColor), icon: Icon(icon, size: iconSize, color: iconColor),
tooltip: tooltip, tooltip: tooltip,
highlightElevation: 0, highlightElevation: 0,

@ -94,7 +94,7 @@ class MediaButton extends StatelessWidget {
final iconFillColor = final iconFillColor =
iconTheme?.iconUnselectedFillColor ?? fillColor ?? theme.canvasColor; iconTheme?.iconUnselectedFillColor ?? fillColor ?? theme.canvasColor;
return QuillIconButton( return QuillToolbarIconButton(
icon: Icon(icon, size: iconSize, color: iconColor), icon: Icon(icon, size: iconSize, color: iconColor),
tooltip: tooltip, tooltip: tooltip,
highlightElevation: 0, highlightElevation: 0,

@ -53,7 +53,7 @@ class VideoButton extends StatelessWidget {
final iconFillColor = final iconFillColor =
iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor); iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor);
return QuillIconButton( return QuillToolbarIconButton(
icon: Icon(icon, size: iconSize, color: iconColor), icon: Icon(icon, size: iconSize, color: iconColor),
tooltip: tooltip, tooltip: tooltip,
highlightElevation: 0, highlightElevation: 0,

@ -6,8 +6,8 @@ import 'package:flutter/material.dart';
/// ///
/// The arrow indicators are automatically hidden if the list is not /// The arrow indicators are automatically hidden if the list is not
/// scrollable in the direction of the respective arrow. /// scrollable in the direction of the respective arrow.
class ArrowIndicatedButtonList extends StatefulWidget { class QuillToolbarArrowIndicatedButtonList extends StatefulWidget {
const ArrowIndicatedButtonList({ const QuillToolbarArrowIndicatedButtonList({
required this.axis, required this.axis,
required this.buttons, required this.buttons,
Key? key, Key? key,
@ -17,11 +17,12 @@ class ArrowIndicatedButtonList extends StatefulWidget {
final List<Widget> buttons; final List<Widget> buttons;
@override @override
_ArrowIndicatedButtonListState createState() => _QuillToolbarArrowIndicatedButtonListState createState() =>
_ArrowIndicatedButtonListState(); _QuillToolbarArrowIndicatedButtonListState();
} }
class _ArrowIndicatedButtonListState extends State<ArrowIndicatedButtonList> class _QuillToolbarArrowIndicatedButtonListState
extends State<QuillToolbarArrowIndicatedButtonList>
with WidgetsBindingObserver { with WidgetsBindingObserver {
final ScrollController _controller = ScrollController(); final ScrollController _controller = ScrollController();
bool _showBackwardArrow = false; bool _showBackwardArrow = false;

@ -5,8 +5,8 @@ import '../../../models/themes/quill_icon_theme.dart';
import '../../controller.dart'; import '../../controller.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class ClearFormatButton extends StatefulWidget { class QuillToolbarClearFormatButton extends StatefulWidget {
const ClearFormatButton({ const QuillToolbarClearFormatButton({
required this.icon, required this.icon,
required this.controller, required this.controller,
this.iconSize = kDefaultIconSize, this.iconSize = kDefaultIconSize,
@ -26,10 +26,12 @@ class ClearFormatButton extends StatefulWidget {
final String? tooltip; final String? tooltip;
@override @override
_ClearFormatButtonState createState() => _ClearFormatButtonState(); _QuillToolbarClearFormatButtonState createState() =>
_QuillToolbarClearFormatButtonState();
} }
class _ClearFormatButtonState extends State<ClearFormatButton> { class _QuillToolbarClearFormatButtonState
extends State<QuillToolbarClearFormatButton> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context); final theme = Theme.of(context);
@ -37,7 +39,7 @@ class _ClearFormatButtonState extends State<ClearFormatButton> {
widget.iconTheme?.iconUnselectedColor ?? theme.iconTheme.color; widget.iconTheme?.iconUnselectedColor ?? theme.iconTheme.color;
final fillColor = final fillColor =
widget.iconTheme?.iconUnselectedFillColor ?? theme.canvasColor; widget.iconTheme?.iconUnselectedFillColor ?? theme.canvasColor;
return QuillIconButton( return QuillToolbarIconButton(
tooltip: widget.tooltip, tooltip: widget.tooltip,
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,

@ -13,8 +13,8 @@ import '../toolbar.dart';
/// ///
/// When pressed, this button displays overlay toolbar with /// When pressed, this button displays overlay toolbar with
/// buttons for each color. /// buttons for each color.
class ColorButton extends StatefulWidget { class QuillToolbarColorButton extends StatefulWidget {
const ColorButton({ const QuillToolbarColorButton({
required this.icon, required this.icon,
required this.controller, required this.controller,
required this.background, required this.background,
@ -36,10 +36,11 @@ class ColorButton extends StatefulWidget {
final Color dialogBarrierColor; final Color dialogBarrierColor;
@override @override
_ColorButtonState createState() => _ColorButtonState(); _QuillToolbarColorButtonState createState() =>
_QuillToolbarColorButtonState();
} }
class _ColorButtonState extends State<ColorButton> { class _QuillToolbarColorButtonState extends State<QuillToolbarColorButton> {
late bool _isToggledColor; late bool _isToggledColor;
late bool _isToggledBackground; late bool _isToggledBackground;
late bool _isWhite; late bool _isWhite;
@ -81,7 +82,7 @@ class _ColorButtonState extends State<ColorButton> {
} }
@override @override
void didUpdateWidget(covariant ColorButton oldWidget) { void didUpdateWidget(covariant QuillToolbarColorButton oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != widget.controller) { if (oldWidget.controller != widget.controller) {
oldWidget.controller.removeListener(_didChangeEditingValue); oldWidget.controller.removeListener(_didChangeEditingValue);
@ -122,7 +123,7 @@ class _ColorButtonState extends State<ColorButton> {
? stringToColor('#ffffff') ? stringToColor('#ffffff')
: (widget.iconTheme?.iconUnselectedFillColor ?? theme.canvasColor); : (widget.iconTheme?.iconUnselectedFillColor ?? theme.canvasColor);
return QuillIconButton( return QuillToolbarIconButton(
tooltip: widget.tooltip, tooltip: widget.tooltip,
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,

@ -28,7 +28,7 @@ class CustomButton extends StatelessWidget {
final theme = Theme.of(context); final theme = Theme.of(context);
final iconColor = iconTheme?.iconUnselectedColor ?? theme.iconTheme.color; final iconColor = iconTheme?.iconUnselectedColor ?? theme.iconTheme.color;
return QuillIconButton( return QuillToolbarIconButton(
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,
size: iconSize * kIconButtonFactor, size: iconSize * kIconButtonFactor,

@ -97,7 +97,7 @@ class _QuillToolbarHistoryButtonState extends State<QuillToolbarHistoryButton> {
), ),
); );
} }
return QuillIconButton( return QuillToolbarIconButton(
tooltip: tooltip, tooltip: tooltip,
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,

@ -4,8 +4,8 @@ import '../../../models/themes/quill_icon_theme.dart';
import '../../controller.dart'; import '../../controller.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class IndentButton extends StatefulWidget { class QuillToolbarIndentButton extends StatefulWidget {
const IndentButton({ const QuillToolbarIndentButton({
required this.icon, required this.icon,
required this.controller, required this.controller,
required this.isIncrease, required this.isIncrease,
@ -26,10 +26,11 @@ class IndentButton extends StatefulWidget {
final String? tooltip; final String? tooltip;
@override @override
_IndentButtonState createState() => _IndentButtonState(); _QuillToolbarIndentButtonState createState() =>
_QuillToolbarIndentButtonState();
} }
class _IndentButtonState extends State<IndentButton> { class _QuillToolbarIndentButtonState extends State<QuillToolbarIndentButton> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context); final theme = Theme.of(context);
@ -38,7 +39,7 @@ class _IndentButtonState extends State<IndentButton> {
widget.iconTheme?.iconUnselectedColor ?? theme.iconTheme.color; widget.iconTheme?.iconUnselectedColor ?? theme.iconTheme.color;
final iconFillColor = final iconFillColor =
widget.iconTheme?.iconUnselectedFillColor ?? theme.canvasColor; widget.iconTheme?.iconUnselectedFillColor ?? theme.canvasColor;
return QuillIconButton( return QuillToolbarIconButton(
tooltip: widget.tooltip, tooltip: widget.tooltip,
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,

@ -10,8 +10,8 @@ import '../../controller.dart';
import '../../link.dart'; import '../../link.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class LinkStyleButton extends StatefulWidget { class QuillToolbarLinkStyleButton extends StatefulWidget {
const LinkStyleButton({ const QuillToolbarLinkStyleButton({
required this.controller, required this.controller,
this.iconSize = kDefaultIconSize, this.iconSize = kDefaultIconSize,
this.icon, this.icon,
@ -37,10 +37,12 @@ class LinkStyleButton extends StatefulWidget {
final Color dialogBarrierColor; final Color dialogBarrierColor;
@override @override
_LinkStyleButtonState createState() => _LinkStyleButtonState(); _QuillToolbarLinkStyleButtonState createState() =>
_QuillToolbarLinkStyleButtonState();
} }
class _LinkStyleButtonState extends State<LinkStyleButton> { class _QuillToolbarLinkStyleButtonState
extends State<QuillToolbarLinkStyleButton> {
void _didChangeSelection() { void _didChangeSelection() {
setState(() {}); setState(() {});
} }
@ -52,7 +54,7 @@ class _LinkStyleButtonState extends State<LinkStyleButton> {
} }
@override @override
void didUpdateWidget(covariant LinkStyleButton oldWidget) { void didUpdateWidget(covariant QuillToolbarLinkStyleButton oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != widget.controller) { if (oldWidget.controller != widget.controller) {
oldWidget.controller.removeListener(_didChangeSelection); oldWidget.controller.removeListener(_didChangeSelection);
@ -71,7 +73,7 @@ class _LinkStyleButtonState extends State<LinkStyleButton> {
final theme = Theme.of(context); final theme = Theme.of(context);
final isToggled = _getLinkAttributeValue() != null; final isToggled = _getLinkAttributeValue() != null;
final pressedHandler = () => _openLinkDialog(context); final pressedHandler = () => _openLinkDialog(context);
return QuillIconButton( return QuillToolbarIconButton(
tooltip: widget.tooltip, tooltip: widget.tooltip,
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,

@ -12,10 +12,10 @@ import '../../controller.dart';
import '../../link.dart'; import '../../link.dart';
import '../toolbar.dart'; import '../toolbar.dart';
/// Alternative version of [LinkStyleButton]. This widget has more customization /// Alternative version of [QuillToolbarLinkStyleButton]. This widget has more customization
/// and uses dialog similar to one which is used on [http://quilljs.com]. /// and uses dialog similar to one which is used on [http://quilljs.com].
class LinkStyleButton2 extends StatefulWidget { class QuillToolbarLinkStyleButton2 extends StatefulWidget {
const LinkStyleButton2({ const QuillToolbarLinkStyleButton2({
required this.controller, required this.controller,
this.icon, this.icon,
this.iconSize = kDefaultIconSize, this.iconSize = kDefaultIconSize,
@ -71,10 +71,12 @@ class LinkStyleButton2 extends StatefulWidget {
final Color dialogBarrierColor; final Color dialogBarrierColor;
@override @override
State<LinkStyleButton2> createState() => _LinkStyleButton2State(); State<QuillToolbarLinkStyleButton2> createState() =>
_QuillToolbarLinkStyleButton2State();
} }
class _LinkStyleButton2State extends State<LinkStyleButton2> { class _QuillToolbarLinkStyleButton2State
extends State<QuillToolbarLinkStyleButton2> {
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
@ -88,7 +90,7 @@ class _LinkStyleButton2State extends State<LinkStyleButton2> {
} }
@override @override
void didUpdateWidget(covariant LinkStyleButton2 oldWidget) { void didUpdateWidget(covariant QuillToolbarLinkStyleButton2 oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != widget.controller) { if (oldWidget.controller != widget.controller) {
oldWidget.controller.removeListener(_didChangeSelection); oldWidget.controller.removeListener(_didChangeSelection);
@ -100,7 +102,7 @@ class _LinkStyleButton2State extends State<LinkStyleButton2> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context); final theme = Theme.of(context);
final isToggled = _getLinkAttributeValue() != null; final isToggled = _getLinkAttributeValue() != null;
return QuillIconButton( return QuillToolbarIconButton(
tooltip: widget.tooltip, tooltip: widget.tooltip,
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,

@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import '../../../utils/widgets.dart'; import '../../../utils/widgets.dart';
class QuillIconButton extends StatelessWidget { class QuillToolbarIconButton extends StatelessWidget {
const QuillIconButton({ const QuillToolbarIconButton({
required this.onPressed, required this.onPressed,
this.afterPressed, this.afterPressed,
this.icon, this.icon,

@ -6,8 +6,8 @@ import '../../controller.dart';
import '../search_dialog.dart'; import '../search_dialog.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class SearchButton extends StatelessWidget { class QuillToolbarSearchButton extends StatelessWidget {
const SearchButton({ const QuillToolbarSearchButton({
required this.icon, required this.icon,
required this.controller, required this.controller,
this.iconSize = kDefaultIconSize, this.iconSize = kDefaultIconSize,
@ -40,7 +40,7 @@ class SearchButton extends StatelessWidget {
final iconFillColor = final iconFillColor =
iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor); iconTheme?.iconUnselectedFillColor ?? (fillColor ?? theme.canvasColor);
return QuillIconButton( return QuillToolbarIconButton(
tooltip: tooltip, tooltip: tooltip,
icon: Icon(icon, size: iconSize, color: iconColor), icon: Icon(icon, size: iconSize, color: iconColor),
highlightElevation: 0, highlightElevation: 0,

@ -9,8 +9,8 @@ import '../../controller.dart';
import '../enum.dart'; import '../enum.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class SelectAlignmentButton extends StatefulWidget { class QuillToolbarSelectAlignmentButton extends StatefulWidget {
const SelectAlignmentButton({ const QuillToolbarSelectAlignmentButton({
required this.controller, required this.controller,
this.iconSize = kDefaultIconSize, this.iconSize = kDefaultIconSize,
this.iconTheme, this.iconTheme,
@ -37,10 +37,12 @@ class SelectAlignmentButton extends StatefulWidget {
final EdgeInsetsGeometry? padding; final EdgeInsetsGeometry? padding;
@override @override
_SelectAlignmentButtonState createState() => _SelectAlignmentButtonState(); _QuillToolbarSelectAlignmentButtonState createState() =>
_QuillToolbarSelectAlignmentButtonState();
} }
class _SelectAlignmentButtonState extends State<SelectAlignmentButton> { class _QuillToolbarSelectAlignmentButtonState
extends State<QuillToolbarSelectAlignmentButton> {
Attribute? _value; Attribute? _value;
Style get _selectionStyle => widget.controller.getSelectionStyle(); Style get _selectionStyle => widget.controller.getSelectionStyle();
@ -164,7 +166,7 @@ class _SelectAlignmentButtonState extends State<SelectAlignmentButton> {
} }
@override @override
void didUpdateWidget(covariant SelectAlignmentButton oldWidget) { void didUpdateWidget(covariant QuillToolbarSelectAlignmentButton oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != widget.controller) { if (oldWidget.controller != widget.controller) {
oldWidget.controller.removeListener(_didChangeEditingValue); oldWidget.controller.removeListener(_didChangeEditingValue);

@ -8,8 +8,8 @@ import '../../../utils/widgets.dart';
import '../../controller.dart'; import '../../controller.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class SelectHeaderStyleButton extends StatefulWidget { class QuillToolbarSelectHeaderStyleButton extends StatefulWidget {
const SelectHeaderStyleButton({ const QuillToolbarSelectHeaderStyleButton({
required this.controller, required this.controller,
this.axis = Axis.horizontal, this.axis = Axis.horizontal,
this.iconSize = kDefaultIconSize, this.iconSize = kDefaultIconSize,
@ -34,11 +34,12 @@ class SelectHeaderStyleButton extends StatefulWidget {
final String? tooltip; final String? tooltip;
@override @override
_SelectHeaderStyleButtonState createState() => _QuillToolbarSelectHeaderStyleButtonState createState() =>
_SelectHeaderStyleButtonState(); _QuillToolbarSelectHeaderStyleButtonState();
} }
class _SelectHeaderStyleButtonState extends State<SelectHeaderStyleButton> { class _QuillToolbarSelectHeaderStyleButtonState
extends State<QuillToolbarSelectHeaderStyleButton> {
Attribute? _selectedAttribute; Attribute? _selectedAttribute;
Style get _selectionStyle => widget.controller.getSelectionStyle(); Style get _selectionStyle => widget.controller.getSelectionStyle();
@ -148,7 +149,8 @@ class _SelectHeaderStyleButtonState extends State<SelectHeaderStyleButton> {
} }
@override @override
void didUpdateWidget(covariant SelectHeaderStyleButton oldWidget) { void didUpdateWidget(
covariant QuillToolbarSelectHeaderStyleButton oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != widget.controller) { if (oldWidget.controller != widget.controller) {
oldWidget.controller.removeListener(_didChangeEditingValue); oldWidget.controller.removeListener(_didChangeEditingValue);

@ -7,8 +7,8 @@ import '../../../utils/widgets.dart';
import '../../controller.dart'; import '../../controller.dart';
import '../toolbar.dart'; import '../toolbar.dart';
class ToggleCheckListButton extends StatefulWidget { class QuillToolbarToggleCheckListButton extends StatefulWidget {
const ToggleCheckListButton({ const QuillToolbarToggleCheckListButton({
required this.icon, required this.icon,
required this.controller, required this.controller,
required this.attribute, required this.attribute,
@ -37,10 +37,12 @@ class ToggleCheckListButton extends StatefulWidget {
final String? tooltip; final String? tooltip;
@override @override
_ToggleCheckListButtonState createState() => _ToggleCheckListButtonState(); _QuillToolbarToggleCheckListButtonState createState() =>
_QuillToolbarToggleCheckListButtonState();
} }
class _ToggleCheckListButtonState extends State<ToggleCheckListButton> { class _QuillToolbarToggleCheckListButtonState
extends State<QuillToolbarToggleCheckListButton> {
bool? _isToggled; bool? _isToggled;
Style get _selectionStyle => widget.controller.getSelectionStyle(); Style get _selectionStyle => widget.controller.getSelectionStyle();
@ -77,7 +79,7 @@ class _ToggleCheckListButtonState extends State<ToggleCheckListButton> {
} }
@override @override
void didUpdateWidget(covariant ToggleCheckListButton oldWidget) { void didUpdateWidget(covariant QuillToolbarToggleCheckListButton oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != widget.controller) { if (oldWidget.controller != widget.controller) {
oldWidget.controller.removeListener(_didChangeEditingValue); oldWidget.controller.removeListener(_didChangeEditingValue);

@ -21,8 +21,8 @@ typedef ToggleStyleButtonBuilder = Widget Function(
QuillIconTheme? iconTheme, QuillIconTheme? iconTheme,
]); ]);
class ToggleStyleButton extends StatefulWidget { class QuillToolbarToggleStyleButton extends StatefulWidget {
const ToggleStyleButton({ const QuillToolbarToggleStyleButton({
required this.options, required this.options,
required this.controller, required this.controller,
required this.attribute, required this.attribute,
@ -60,10 +60,12 @@ class ToggleStyleButton extends StatefulWidget {
final QuillController controller; final QuillController controller;
@override @override
_ToggleStyleButtonState createState() => _ToggleStyleButtonState(); _QuillToolbarToggleStyleButtonState createState() =>
_QuillToolbarToggleStyleButtonState();
} }
class _ToggleStyleButtonState extends State<ToggleStyleButton> { class _QuillToolbarToggleStyleButtonState
extends State<QuillToolbarToggleStyleButton> {
/// Since it's not safe to call anything related to the context in dispose /// Since it's not safe to call anything related to the context in dispose
/// then we will save a reference to the [controller] /// then we will save a reference to the [controller]
/// and update it in [didChangeDependencies] /// and update it in [didChangeDependencies]
@ -229,7 +231,7 @@ class _ToggleStyleButtonState extends State<ToggleStyleButton> {
} }
@override @override
void didUpdateWidget(covariant ToggleStyleButton oldWidget) { void didUpdateWidget(covariant QuillToolbarToggleStyleButton oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.controller != controller) { if (oldWidget.controller != controller) {
oldWidget.controller.removeListener(_didChangeEditingValue); oldWidget.controller.removeListener(_didChangeEditingValue);
@ -301,7 +303,7 @@ Widget defaultToggleStyleButtonBuilder(
theme.canvasColor) //Unselected icon fill color : theme.canvasColor) //Unselected icon fill color :
: (iconTheme?.disabledIconFillColor ?? : (iconTheme?.disabledIconFillColor ??
(fillColor ?? theme.canvasColor)); //Disabled icon fill color (fillColor ?? theme.canvasColor)); //Disabled icon fill color
return QuillIconButton( return QuillToolbarIconButton(
highlightElevation: 0, highlightElevation: 0,
hoverElevation: 0, hoverElevation: 0,
size: iconSize * kIconButtonFactor, size: iconSize * kIconButtonFactor,

@ -16,7 +16,7 @@ export 'buttons/history.dart';
export 'buttons/indent.dart'; export 'buttons/indent.dart';
export 'buttons/link_style.dart'; export 'buttons/link_style.dart';
export 'buttons/link_style2.dart'; export 'buttons/link_style2.dart';
export 'buttons/quill_font_size.dart'; export 'buttons/font_size.dart';
export 'buttons/quill_icon.dart'; export 'buttons/quill_icon.dart';
export 'buttons/search.dart'; export 'buttons/search.dart';
export 'buttons/select_alignment.dart'; export 'buttons/select_alignment.dart';
@ -232,7 +232,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
context.requireQuillController, context.requireQuillController,
), ),
if (showBoldButton) if (showBoldButton)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.bold, attribute: Attribute.bold,
options: toolbarConfigurations.buttonOptions.bold, options: toolbarConfigurations.buttonOptions.bold,
controller: toolbarConfigurations.buttonOptions.bold.controller ?? controller: toolbarConfigurations.buttonOptions.bold.controller ??
@ -245,7 +245,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showSubscript) if (showSubscript)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.subscript, attribute: Attribute.subscript,
options: toolbarConfigurations.buttonOptions.subscript, options: toolbarConfigurations.buttonOptions.subscript,
controller: controller:
@ -259,7 +259,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showSuperscript) if (showSuperscript)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.superscript, attribute: Attribute.superscript,
options: toolbarConfigurations.buttonOptions.superscript, options: toolbarConfigurations.buttonOptions.superscript,
controller: controller:
@ -273,7 +273,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showItalicButton) if (showItalicButton)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.italic, attribute: Attribute.italic,
options: toolbarConfigurations.buttonOptions.italic, options: toolbarConfigurations.buttonOptions.italic,
controller: controller:
@ -287,7 +287,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showSmallButton) if (showSmallButton)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.small, attribute: Attribute.small,
options: toolbarConfigurations.buttonOptions.small, options: toolbarConfigurations.buttonOptions.small,
controller: controller:
@ -301,7 +301,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showUnderLineButton) if (showUnderLineButton)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.underline, attribute: Attribute.underline,
options: toolbarConfigurations.buttonOptions.underLine, options: toolbarConfigurations.buttonOptions.underLine,
controller: controller:
@ -315,7 +315,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showStrikeThrough) if (showStrikeThrough)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.strikeThrough, attribute: Attribute.strikeThrough,
options: toolbarConfigurations.buttonOptions.strikeThrough, options: toolbarConfigurations.buttonOptions.strikeThrough,
controller: toolbarConfigurations controller: toolbarConfigurations
@ -329,7 +329,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showInlineCode) if (showInlineCode)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.inlineCode, attribute: Attribute.inlineCode,
options: toolbarConfigurations.buttonOptions.inlineCode, options: toolbarConfigurations.buttonOptions.inlineCode,
controller: controller:
@ -343,7 +343,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showColorButton) if (showColorButton)
ColorButton( QuillToolbarColorButton(
icon: Icons.color_lens, icon: Icons.color_lens,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
tooltip: buttonTooltips[ToolbarButtons.color], tooltip: buttonTooltips[ToolbarButtons.color],
@ -355,7 +355,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
context.requireQuillSharedConfigurations.dialogBarrierColor, context.requireQuillSharedConfigurations.dialogBarrierColor,
), ),
if (showBackgroundColorButton) if (showBackgroundColorButton)
ColorButton( QuillToolbarColorButton(
icon: Icons.format_color_fill, icon: Icons.format_color_fill,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
tooltip: buttonTooltips[ToolbarButtons.backgroundColor], tooltip: buttonTooltips[ToolbarButtons.backgroundColor],
@ -367,7 +367,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
context.requireQuillSharedConfigurations.dialogBarrierColor, context.requireQuillSharedConfigurations.dialogBarrierColor,
), ),
if (showClearFormat) if (showClearFormat)
ClearFormatButton( QuillToolbarClearFormatButton(
icon: Icons.format_clear, icon: Icons.format_clear,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
tooltip: buttonTooltips[ToolbarButtons.clearFormat], tooltip: buttonTooltips[ToolbarButtons.clearFormat],
@ -391,7 +391,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
space: sectionDividerSpace, space: sectionDividerSpace,
), ),
if (showAlignmentButtons) if (showAlignmentButtons)
SelectAlignmentButton( QuillToolbarSelectAlignmentButton(
controller: controller, controller: controller,
tooltips: Map.of(buttonTooltips) tooltips: Map.of(buttonTooltips)
..removeWhere((key, value) => ![ ..removeWhere((key, value) => ![
@ -409,7 +409,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
afterButtonPressed: afterButtonPressed, afterButtonPressed: afterButtonPressed,
), ),
if (showDirection) if (showDirection)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.rtl, attribute: Attribute.rtl,
options: toolbarConfigurations.buttonOptions.direction, options: toolbarConfigurations.buttonOptions.direction,
controller: controller:
@ -434,7 +434,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
space: sectionDividerSpace, space: sectionDividerSpace,
), ),
if (showHeaderStyle) if (showHeaderStyle)
SelectHeaderStyleButton( QuillToolbarSelectHeaderStyleButton(
tooltip: buttonTooltips[ToolbarButtons.headerStyle], tooltip: buttonTooltips[ToolbarButtons.headerStyle],
controller: controller, controller: controller,
axis: axis, axis: axis,
@ -454,7 +454,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
space: sectionDividerSpace, space: sectionDividerSpace,
), ),
if (showListNumbers) if (showListNumbers)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.ol, attribute: Attribute.ol,
options: toolbarConfigurations.buttonOptions.listNumbers, options: toolbarConfigurations.buttonOptions.listNumbers,
controller: controller:
@ -468,7 +468,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showListBullets) if (showListBullets)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.ul, attribute: Attribute.ul,
options: toolbarConfigurations.buttonOptions.listBullets, options: toolbarConfigurations.buttonOptions.listBullets,
controller: controller:
@ -482,7 +482,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showListCheck) if (showListCheck)
ToggleCheckListButton( QuillToolbarToggleCheckListButton(
attribute: Attribute.unchecked, attribute: Attribute.unchecked,
tooltip: buttonTooltips[ToolbarButtons.listChecks], tooltip: buttonTooltips[ToolbarButtons.listChecks],
controller: controller, controller: controller,
@ -492,7 +492,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
afterButtonPressed: afterButtonPressed, afterButtonPressed: afterButtonPressed,
), ),
if (showCodeBlock) if (showCodeBlock)
ToggleStyleButton( QuillToolbarToggleStyleButton(
attribute: Attribute.codeBlock, attribute: Attribute.codeBlock,
options: toolbarConfigurations.buttonOptions.codeBlock, options: toolbarConfigurations.buttonOptions.codeBlock,
controller: controller:
@ -511,7 +511,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
QuillDivider(axis, QuillDivider(axis,
color: sectionDividerColor, space: sectionDividerSpace), color: sectionDividerColor, space: sectionDividerSpace),
if (showQuote) if (showQuote)
ToggleStyleButton( QuillToolbarToggleStyleButton(
options: toolbarConfigurations.buttonOptions.quote, options: toolbarConfigurations.buttonOptions.quote,
controller: controller:
toolbarConfigurations.buttonOptions.quote.controller ?? toolbarConfigurations.buttonOptions.quote.controller ??
@ -525,7 +525,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
// afterButtonPressed: afterButtonPressed, // afterButtonPressed: afterButtonPressed,
), ),
if (showIndent) if (showIndent)
IndentButton( QuillToolbarIndentButton(
icon: Icons.format_indent_increase, icon: Icons.format_indent_increase,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
tooltip: buttonTooltips[ToolbarButtons.indentIncrease], tooltip: buttonTooltips[ToolbarButtons.indentIncrease],
@ -535,7 +535,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
afterButtonPressed: afterButtonPressed, afterButtonPressed: afterButtonPressed,
), ),
if (showIndent) if (showIndent)
IndentButton( QuillToolbarIndentButton(
icon: Icons.format_indent_decrease, icon: Icons.format_indent_decrease,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
tooltip: buttonTooltips[ToolbarButtons.indentDecrease], tooltip: buttonTooltips[ToolbarButtons.indentDecrease],
@ -548,7 +548,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
QuillDivider(axis, QuillDivider(axis,
color: sectionDividerColor, space: sectionDividerSpace), color: sectionDividerColor, space: sectionDividerSpace),
if (showLink) if (showLink)
LinkStyleButton( QuillToolbarLinkStyleButton(
tooltip: buttonTooltips[ToolbarButtons.link], tooltip: buttonTooltips[ToolbarButtons.link],
controller: controller, controller: controller,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
@ -561,7 +561,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
context.requireQuillSharedConfigurations.dialogBarrierColor, context.requireQuillSharedConfigurations.dialogBarrierColor,
), ),
if (showSearchButton) if (showSearchButton)
SearchButton( QuillToolbarSearchButton(
icon: Icons.search, icon: Icons.search,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
dialogBarrierColor: dialogBarrierColor:
@ -664,7 +664,7 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
height: axis == Axis.horizontal ? toolbarSize : null, height: axis == Axis.horizontal ? toolbarSize : null,
width: axis == Axis.vertical ? toolbarSize : null, width: axis == Axis.vertical ? toolbarSize : null,
), ),
child: ArrowIndicatedButtonList( child: QuillToolbarArrowIndicatedButtonList(
axis: axis, axis: axis,
buttons: childrenBuilder(context), buttons: childrenBuilder(context),
), ),

@ -30,21 +30,21 @@ void main() {
final builtinFinder = find.descendant( final builtinFinder = find.descendant(
of: find.byType(QuillToolbarHistoryButton), of: find.byType(QuillToolbarHistoryButton),
matching: find.byType(QuillIconButton), matching: find.byType(QuillToolbarIconButton),
matchRoot: true, matchRoot: true,
); );
expect(builtinFinder, findsOneWidget); expect(builtinFinder, findsOneWidget);
final builtinButton = final builtinButton =
builtinFinder.evaluate().first.widget as QuillIconButton; builtinFinder.evaluate().first.widget as QuillToolbarIconButton;
final customFinder = find.descendant( final customFinder = find.descendant(
of: find.byType(QuillToolbar), of: find.byType(QuillToolbar),
matching: find.byWidgetPredicate((widget) => matching: find.byWidgetPredicate((widget) =>
widget is QuillIconButton && widget.tooltip == tooltip), widget is QuillToolbarIconButton && widget.tooltip == tooltip),
matchRoot: true); matchRoot: true);
expect(customFinder, findsOneWidget); expect(customFinder, findsOneWidget);
final customButton = final customButton =
customFinder.evaluate().first.widget as QuillIconButton; customFinder.evaluate().first.widget as QuillToolbarIconButton;
expect(customButton.fillColor, equals(builtinButton.fillColor)); expect(customButton.fillColor, equals(builtinButton.fillColor));
}); });

Loading…
Cancel
Save