From 23198529fe35f97eed0416402243030844e3d58a Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Tue, 10 Dec 2024 05:24:39 +0530 Subject: [PATCH] Add ADIconButton --- lib/widgets/button_clear_response.dart | 10 +++--- lib/widgets/button_copy.dart | 11 +++--- .../lib/widgets/button_icon.dart | 34 +++++++++++++++++++ .../lib/widgets/widgets.dart | 1 + 4 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 packages/apidash_design_system/lib/widgets/button_icon.dart diff --git a/lib/widgets/button_clear_response.dart b/lib/widgets/button_clear_response.dart index 348c0913..75247365 100644 --- a/lib/widgets/button_clear_response.dart +++ b/lib/widgets/button_clear_response.dart @@ -1,3 +1,4 @@ +import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:apidash/consts.dart'; @@ -11,13 +12,10 @@ class ClearResponseButton extends StatelessWidget { @override Widget build(BuildContext context) { - return IconButton( - tooltip: kTooltipClearResponse, + return ADIconButton( + icon: Icons.delete, onPressed: onPressed, - icon: const Icon( - Icons.delete, - size: 16, - ), + tooltip: kTooltipClearResponse, ); } } diff --git a/lib/widgets/button_copy.dart b/lib/widgets/button_copy.dart index ec6e7f36..ed5db226 100644 --- a/lib/widgets/button_copy.dart +++ b/lib/widgets/button_copy.dart @@ -1,3 +1,4 @@ +import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:apidash/consts.dart'; @@ -20,7 +21,6 @@ class CopyButton extends StatelessWidget { Icons.content_copy, size: 18, ); - const label = kLabelCopy; onPressed() async { await Clipboard.setData(ClipboardData(text: toCopy)); sm.hideCurrentSnackBar(); @@ -31,14 +31,15 @@ class CopyButton extends StatelessWidget { ? TextButton.icon( onPressed: onPressed, icon: icon, - label: const Text(label), + label: const Text(kLabelCopy), ) - : IconButton( - tooltip: label, + : ADIconButton( + icon: Icons.content_copy, + iconSize: 18, + tooltip: kLabelCopy, color: Theme.of(context).colorScheme.primary, visualDensity: VisualDensity.compact, onPressed: onPressed, - icon: icon, ); } } diff --git a/packages/apidash_design_system/lib/widgets/button_icon.dart b/packages/apidash_design_system/lib/widgets/button_icon.dart new file mode 100644 index 00000000..a2c5ea1c --- /dev/null +++ b/packages/apidash_design_system/lib/widgets/button_icon.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +class ADIconButton extends StatelessWidget { + const ADIconButton({ + super.key, + required this.icon, + this.iconSize, + this.onPressed, + this.color, + this.visualDensity, + this.tooltip, + }); + + final IconData icon; + final double? iconSize; + final VoidCallback? onPressed; + final Color? color; + final VisualDensity? visualDensity; + final String? tooltip; + + @override + Widget build(BuildContext context) { + return IconButton( + tooltip: tooltip, + icon: Icon( + icon, + size: iconSize ?? 16, + ), + color: color, + visualDensity: visualDensity, + onPressed: onPressed, + ); + } +} diff --git a/packages/apidash_design_system/lib/widgets/widgets.dart b/packages/apidash_design_system/lib/widgets/widgets.dart index 2e26a2da..00e2cdf5 100644 --- a/packages/apidash_design_system/lib/widgets/widgets.dart +++ b/packages/apidash_design_system/lib/widgets/widgets.dart @@ -1,2 +1,3 @@ +export 'button_icon.dart'; export 'dropdown.dart'; export 'textfield_outlined.dart';