From 661f8e8744c96f660a1f198b5fed1828bc5afefd Mon Sep 17 00:00:00 2001 From: Ellet Date: Wed, 20 Dec 2023 22:49:55 +0300 Subject: [PATCH] Fix analysis warrnings + bugs --- .../others/camera_button/camera_button.dart | 2 +- lib/src/models/themes/quill_icon_theme.dart | 57 +++++++++++++++++++ .../toolbar/buttons/font_family_button.dart | 14 +++-- .../toolbar/buttons/font_size_button.dart | 16 ++++-- .../select_header_style_buttons.dart | 15 +++-- 5 files changed, 90 insertions(+), 14 deletions(-) diff --git a/flutter_quill_extensions/lib/embeds/others/camera_button/camera_button.dart b/flutter_quill_extensions/lib/embeds/others/camera_button/camera_button.dart index cbd845fc..08e286a2 100644 --- a/flutter_quill_extensions/lib/embeds/others/camera_button/camera_button.dart +++ b/flutter_quill_extensions/lib/embeds/others/camera_button/camera_button.dart @@ -112,7 +112,7 @@ class QuillToolbarCameraButton extends StatelessWidget { isSelected: false, // isDesktop(supportWeb: false) ? null : onPressed: () => _sharedOnPressed(context), - iconTheme: _iconTheme(context), + iconTheme: iconTheme, ); } diff --git a/lib/src/models/themes/quill_icon_theme.dart b/lib/src/models/themes/quill_icon_theme.dart index 4d4acd12..68983d66 100644 --- a/lib/src/models/themes/quill_icon_theme.dart +++ b/lib/src/models/themes/quill_icon_theme.dart @@ -1,3 +1,4 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first import 'package:flutter/material.dart'; @immutable @@ -16,6 +17,18 @@ class QuillIconTheme { final IconButtonData? iconButtonUnselectedData; final IconButtonData? iconButtonSelectedData; + + QuillIconTheme copyWith({ + IconButtonData? iconButtonUnselectedData, + IconButtonData? iconButtonSelectedData, + }) { + return QuillIconTheme( + iconButtonUnselectedData: + iconButtonUnselectedData ?? this.iconButtonUnselectedData, + iconButtonSelectedData: + iconButtonSelectedData ?? this.iconButtonSelectedData, + ); + } } @immutable @@ -61,4 +74,48 @@ class IconButtonData { final ButtonStyle? style; final bool? isSelected; final Widget? selectedIcon; + + IconButtonData copyWith({ + double? iconSize, + VisualDensity? visualDensity, + EdgeInsetsGeometry? padding, + AlignmentGeometry? alignment, + double? splashRadius, + Color? color, + Color? focusColor, + Color? hoverColor, + Color? highlightColor, + Color? splashColor, + Color? disabledColor, + MouseCursor? mouseCursor, + bool? autofocus, + String? tooltip, + bool? enableFeedback, + BoxConstraints? constraints, + ButtonStyle? style, + bool? isSelected, + Widget? selectedIcon, + }) { + return IconButtonData( + iconSize: iconSize ?? this.iconSize, + visualDensity: visualDensity ?? this.visualDensity, + padding: padding ?? this.padding, + alignment: alignment ?? this.alignment, + splashRadius: splashRadius ?? this.splashRadius, + color: color ?? this.color, + focusColor: focusColor ?? this.focusColor, + hoverColor: hoverColor ?? this.hoverColor, + highlightColor: highlightColor ?? this.highlightColor, + splashColor: splashColor ?? this.splashColor, + disabledColor: disabledColor ?? this.disabledColor, + mouseCursor: mouseCursor ?? this.mouseCursor, + autofocus: autofocus ?? this.autofocus, + tooltip: tooltip ?? this.tooltip, + enableFeedback: enableFeedback ?? this.enableFeedback, + constraints: constraints ?? this.constraints, + style: style ?? this.style, + isSelected: isSelected ?? this.isSelected, + selectedIcon: selectedIcon ?? this.selectedIcon, + ); + } } diff --git a/lib/src/widgets/toolbar/buttons/font_family_button.dart b/lib/src/widgets/toolbar/buttons/font_family_button.dart index a400c67a..45414e43 100644 --- a/lib/src/widgets/toolbar/buttons/font_family_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_family_button.dart @@ -190,10 +190,16 @@ class QuillToolbarFontFamilyButtonState child: _buildContent(context), ); } - return IconButton( - // tooltip: , // TODO: Use this here - visualDensity: VisualDensity.compact, - style: iconTheme?.iconButtonUnselectedStyle, + return QuillToolbarIconButton( + isSelected: false, + iconTheme: iconTheme?.copyWith( + iconButtonSelectedData: const IconButtonData( + visualDensity: VisualDensity.compact, + ), + iconButtonUnselectedData: const IconButtonData( + visualDensity: VisualDensity.compact, + ), + ), onPressed: _onPressed, icon: _buildContent(context), ); diff --git a/lib/src/widgets/toolbar/buttons/font_size_button.dart b/lib/src/widgets/toolbar/buttons/font_size_button.dart index dc62835f..67b2ecb3 100644 --- a/lib/src/widgets/toolbar/buttons/font_size_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_size_button.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; import '../../../../extensions.dart'; + import '../../../extensions/quill_configurations_ext.dart'; import '../../../l10n/extensions/localizations.dart'; -import '../../../models/config/quill_configurations.dart'; import '../../../models/documents/attribute.dart'; import '../../../models/themes/quill_icon_theme.dart'; import '../../../utils/font.dart'; import '../../quill/quill_controller.dart'; +import '../base_toolbar.dart'; class QuillToolbarFontSizeButton extends StatefulWidget { QuillToolbarFontSizeButton({ @@ -150,10 +151,17 @@ class QuillToolbarFontSizeButtonState child: _buildContent(context), ); } - return IconButton( + return QuillToolbarIconButton( tooltip: tooltip, - visualDensity: VisualDensity.compact, - style: iconTheme?.iconButtonUnselectedStyle, + isSelected: false, + iconTheme: iconTheme?.copyWith( + iconButtonSelectedData: const IconButtonData( + visualDensity: VisualDensity.compact, + ), + iconButtonUnselectedData: const IconButtonData( + visualDensity: VisualDensity.compact, + ), + ), onPressed: _onPressed, icon: _buildContent(context), ); diff --git a/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart index 5268ddee..57ff5d64 100644 --- a/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart +++ b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart @@ -155,12 +155,17 @@ class QuillToolbarSelectHeaderStyleButtonsState width: iconSize * iconButtonFactor, height: iconSize * iconButtonFactor, ), - child: IconButton( + child: QuillToolbarIconButton( tooltip: tooltip, - visualDensity: VisualDensity.compact, - style: isSelected - ? iconTheme?.iconButtonSelectedStyle - : iconTheme?.iconButtonUnselectedStyle, + iconTheme: iconTheme?.copyWith( + iconButtonSelectedData: const IconButtonData( + visualDensity: VisualDensity.compact, + ), + iconButtonUnselectedData: const IconButtonData( + visualDensity: VisualDensity.compact, + ), + ), + isSelected: isSelected, onPressed: () => _sharedOnPressed(attribute), icon: Text( _valueToText[attribute] ??