Add a way to change almost properties of IconButton in QuillIconTheme

pull/1634/head
Ellet 1 year ago
parent a4dd9b54a8
commit 6932c69716
  1. 2
      example/lib/main.dart
  2. 3
      flutter_quill_extensions/lib/embeds/image/toolbar/image_button.dart
  3. 3
      flutter_quill_extensions/lib/embeds/others/camera_button/camera_button.dart
  4. 3
      flutter_quill_extensions/lib/embeds/video/toolbar/video_button.dart
  5. 55
      lib/src/models/themes/quill_icon_theme.dart
  6. 2
      lib/src/widgets/toolbar/buttons/clear_format_button.dart
  7. 3
      lib/src/widgets/toolbar/buttons/history_button.dart
  8. 3
      lib/src/widgets/toolbar/buttons/indent_button.dart
  9. 48
      lib/src/widgets/toolbar/buttons/quill_icon_button.dart
  10. 4
      lib/src/widgets/toolbar/buttons/toggle_style_button.dart

@ -56,7 +56,7 @@ class MyApp extends StatelessWidget {
), ),
), ),
darkTheme: ThemeData( darkTheme: ThemeData(
useMaterial3: true, useMaterial3: false,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
colorScheme: ColorScheme.fromSeed( colorScheme: ColorScheme.fromSeed(
brightness: Brightness.dark, brightness: Brightness.dark,

@ -104,8 +104,7 @@ class QuillToolbarImageButton extends StatelessWidget {
tooltip: tooltip, tooltip: tooltip,
isSelected: false, isSelected: false,
onPressed: () => _sharedOnPressed(context), onPressed: () => _sharedOnPressed(context),
iconSelectedStyle: _iconTheme(context)?.iconButtonSelectedStyle, iconTheme: _iconTheme(context),
iconUnselectedStyle: _iconTheme(context)?.iconButtonUnselectedStyle,
); );
} }

@ -112,8 +112,7 @@ class QuillToolbarCameraButton extends StatelessWidget {
isSelected: false, isSelected: false,
// isDesktop(supportWeb: false) ? null : // isDesktop(supportWeb: false) ? null :
onPressed: () => _sharedOnPressed(context), onPressed: () => _sharedOnPressed(context),
iconSelectedStyle: iconTheme?.iconButtonSelectedStyle, iconTheme: _iconTheme(context),
iconUnselectedStyle: iconTheme?.iconButtonUnselectedStyle,
); );
} }

@ -109,8 +109,7 @@ class QuillToolbarVideoButton extends StatelessWidget {
tooltip: tooltip, tooltip: tooltip,
isSelected: false, isSelected: false,
onPressed: () => _sharedOnPressed(context), onPressed: () => _sharedOnPressed(context),
iconSelectedStyle: _iconTheme(context)?.iconButtonSelectedStyle, iconTheme: _iconTheme(context),
iconUnselectedStyle: _iconTheme(context)?.iconButtonUnselectedStyle,
); );
} }

@ -6,16 +6,63 @@ class QuillIconTheme {
this.padding, this.padding,
this.iconButtonSelectedStyle, this.iconButtonSelectedStyle,
this.iconButtonUnselectedStyle, this.iconButtonUnselectedStyle,
// this.iconSelectedFillColor, this.iconButtonSelectedData,
// this.iconUnselectedFillColor, this.iconButtonUnselectedData,
}); });
@Deprecated('Please use iconButtonUnselectedData instead')
final ButtonStyle? iconButtonUnselectedStyle; final ButtonStyle? iconButtonUnselectedStyle;
@Deprecated('Please use iconButtonSelectedData instead')
final ButtonStyle? iconButtonSelectedStyle; final ButtonStyle? iconButtonSelectedStyle;
// final Color? iconSelectedFillColor; final IconButtonData? iconButtonUnselectedData;
// final Color? iconUnselectedFillColor; final IconButtonData? iconButtonSelectedData;
///The padding for icons ///The padding for icons
final EdgeInsets? padding; final EdgeInsets? padding;
} }
@immutable
class IconButtonData {
const IconButtonData({
this.iconSize,
this.visualDensity,
this.padding,
this.alignment,
this.splashRadius,
this.color,
this.focusColor,
this.hoverColor,
this.highlightColor,
this.splashColor,
this.disabledColor,
this.mouseCursor,
this.autofocus = false,
this.tooltip,
this.enableFeedback,
this.constraints,
this.style,
this.isSelected,
this.selectedIcon,
});
final double? iconSize;
final VisualDensity? visualDensity;
final EdgeInsetsGeometry? padding;
final AlignmentGeometry? alignment;
final double? splashRadius;
final Color? color;
final Color? focusColor;
final Color? hoverColor;
final Color? highlightColor;
final Color? splashColor;
final Color? disabledColor;
final MouseCursor? mouseCursor;
final bool autofocus;
final String? tooltip;
final bool? enableFeedback;
final BoxConstraints? constraints;
final ButtonStyle? style;
final bool? isSelected;
final Widget? selectedIcon;
}

@ -114,7 +114,7 @@ class QuillToolbarClearFormatButton extends StatelessWidget {
isSelected: false, isSelected: false,
onPressed: _sharedOnPressed, onPressed: _sharedOnPressed,
afterPressed: afterButtonPressed, afterPressed: afterButtonPressed,
iconUnselectedStyle: iconTheme?.iconButtonUnselectedStyle, iconTheme: iconTheme,
); );
} }
} }

@ -104,8 +104,7 @@ class QuillToolbarHistoryButtonState extends State<QuillToolbarHistoryButton> {
size: iconSize * iconButtonFactor, size: iconSize * iconButtonFactor,
), ),
isSelected: false, isSelected: false,
iconSelectedStyle: iconTheme?.iconButtonSelectedStyle, iconTheme: iconTheme,
iconUnselectedStyle: iconTheme?.iconButtonUnselectedStyle,
onPressed: _canPressed ? _updateHistory : null, onPressed: _canPressed ? _updateHistory : null,
afterPressed: afterButtonPressed, afterPressed: afterButtonPressed,
); );

@ -116,8 +116,7 @@ class QuillToolbarIndentButtonState extends State<QuillToolbarIndentButton> {
isSelected: false, isSelected: false,
onPressed: _sharedOnPressed, onPressed: _sharedOnPressed,
afterPressed: afterButtonPressed, afterPressed: afterButtonPressed,
iconSelectedStyle: iconTheme?.iconButtonSelectedStyle, iconTheme: iconTheme,
iconUnselectedStyle: iconTheme?.iconButtonUnselectedStyle,
); );
} }
} }

@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../models/themes/quill_icon_theme.dart';
class QuillToolbarIconButton extends StatelessWidget { class QuillToolbarIconButton extends StatelessWidget {
const QuillToolbarIconButton({ const QuillToolbarIconButton({
required this.onPressed, required this.onPressed,
@ -7,10 +9,8 @@ class QuillToolbarIconButton extends StatelessWidget {
required this.isSelected, required this.isSelected,
this.afterPressed, this.afterPressed,
this.tooltip, this.tooltip,
this.padding,
super.key, super.key,
this.iconSelectedStyle, this.iconTheme,
this.iconUnselectedStyle,
}); });
final VoidCallback? onPressed; final VoidCallback? onPressed;
@ -18,25 +18,37 @@ class QuillToolbarIconButton extends StatelessWidget {
final Widget icon; final Widget icon;
final String? tooltip; final String? tooltip;
final EdgeInsets? padding;
final bool isSelected; final bool isSelected;
final ButtonStyle? iconUnselectedStyle; final QuillIconTheme? iconTheme;
final ButtonStyle? iconSelectedStyle;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (isSelected) { if (isSelected) {
return IconButton.filled( return IconButton.filled(
tooltip: tooltip, tooltip: tooltip,
padding: padding,
onPressed: onPressed, onPressed: onPressed,
icon: icon, icon: icon,
style: iconSelectedStyle, style: iconTheme?.iconButtonSelectedData?.style,
visualDensity: iconTheme?.iconButtonSelectedData?.visualDensity,
iconSize: iconTheme?.iconButtonSelectedData?.iconSize,
padding: iconTheme?.iconButtonSelectedData?.padding,
alignment: iconTheme?.iconButtonSelectedData?.alignment,
splashRadius: iconTheme?.iconButtonSelectedData?.splashRadius,
color: iconTheme?.iconButtonSelectedData?.color,
focusColor: iconTheme?.iconButtonSelectedData?.focusColor,
hoverColor: iconTheme?.iconButtonSelectedData?.hoverColor,
highlightColor: iconTheme?.iconButtonSelectedData?.highlightColor,
splashColor: iconTheme?.iconButtonSelectedData?.splashColor,
disabledColor: iconTheme?.iconButtonSelectedData?.disabledColor,
mouseCursor: iconTheme?.iconButtonSelectedData?.mouseCursor,
autofocus: iconTheme?.iconButtonSelectedData?.autofocus ?? false,
enableFeedback: iconTheme?.iconButtonSelectedData?.enableFeedback,
constraints: iconTheme?.iconButtonSelectedData?.constraints,
selectedIcon: iconTheme?.iconButtonSelectedData?.selectedIcon,
); );
} }
return IconButton( return IconButton(
tooltip: tooltip, tooltip: tooltip,
padding: padding,
onPressed: onPressed != null onPressed: onPressed != null
? () { ? () {
onPressed?.call(); onPressed?.call();
@ -44,7 +56,23 @@ class QuillToolbarIconButton extends StatelessWidget {
} }
: null, : null,
icon: icon, icon: icon,
style: iconUnselectedStyle, style: iconTheme?.iconButtonUnselectedData?.style,
visualDensity: iconTheme?.iconButtonUnselectedData?.visualDensity,
iconSize: iconTheme?.iconButtonUnselectedData?.iconSize,
padding: iconTheme?.iconButtonUnselectedData?.padding,
alignment: iconTheme?.iconButtonUnselectedData?.alignment,
splashRadius: iconTheme?.iconButtonUnselectedData?.splashRadius,
color: iconTheme?.iconButtonUnselectedData?.color,
focusColor: iconTheme?.iconButtonUnselectedData?.focusColor,
hoverColor: iconTheme?.iconButtonUnselectedData?.hoverColor,
highlightColor: iconTheme?.iconButtonUnselectedData?.highlightColor,
splashColor: iconTheme?.iconButtonUnselectedData?.splashColor,
disabledColor: iconTheme?.iconButtonUnselectedData?.disabledColor,
mouseCursor: iconTheme?.iconButtonUnselectedData?.mouseCursor,
autofocus: iconTheme?.iconButtonUnselectedData?.autofocus ?? false,
enableFeedback: iconTheme?.iconButtonUnselectedData?.enableFeedback,
constraints: iconTheme?.iconButtonUnselectedData?.constraints,
selectedIcon: iconTheme?.iconButtonUnselectedData?.selectedIcon,
); );
} }
} }

@ -256,8 +256,6 @@ Widget defaultToggleStyleButtonBuilder(
isSelected: isEnabled ? isToggled == true : false, isSelected: isEnabled ? isToggled == true : false,
onPressed: onPressed, onPressed: onPressed,
afterPressed: afterPressed, afterPressed: afterPressed,
padding: iconTheme?.padding, iconTheme: iconTheme,
iconUnselectedStyle: iconTheme?.iconButtonUnselectedStyle,
iconSelectedStyle: iconTheme?.iconButtonSelectedStyle,
); );
} }

Loading…
Cancel
Save