From aa9e95df9595a4de2bf0e0e0eb21347fce93bf03 Mon Sep 17 00:00:00 2001 From: Mrudul-2 <147049798+Mrudul-2@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:06:22 +0530 Subject: [PATCH 01/12] Added Share Functionality in the Code section by implementing a share-tray by using share_plus package --- lib/consts.dart | 1 + lib/widgets/button_copy.dart | 3 +++ lib/widgets/codegen_previewer.dart | 2 ++ pubspec.yaml | 1 + 4 files changed, 7 insertions(+) diff --git a/lib/consts.dart b/lib/consts.dart index d03980f9..7e85f457 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -421,6 +421,7 @@ const kLabelSend = "Send"; const kLabelSending = "Sending.."; const kLabelBusy = "Busy"; const kLabelCopy = "Copy"; +const kLabelShare = "Share"; const kLabelSave = "Save"; const kLabelDownload = "Download"; const kLabelSaving = "Saving"; diff --git a/lib/widgets/button_copy.dart b/lib/widgets/button_copy.dart index 7c401d73..7de91aa5 100644 --- a/lib/widgets/button_copy.dart +++ b/lib/widgets/button_copy.dart @@ -1,6 +1,7 @@ import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/foundation.dart'; import 'package:apidash/consts.dart'; class CopyButton extends StatelessWidget { @@ -39,3 +40,5 @@ class CopyButton extends StatelessWidget { ); } } + + diff --git a/lib/widgets/codegen_previewer.dart b/lib/widgets/codegen_previewer.dart index 5c4aa912..037b580f 100644 --- a/lib/widgets/codegen_previewer.dart +++ b/lib/widgets/codegen_previewer.dart @@ -1,3 +1,4 @@ +import 'package:apidash/widgets/button_share.dart'; import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:highlighter/highlighter.dart' show highlight; @@ -150,6 +151,7 @@ class ViewCodePane extends StatelessWidget { toCopy: code, showLabel: showLabel, ), + ShareButton(toShare: code), SaveInDownloadsButton( content: stringToBytes(code), ext: codegenLanguage.ext, diff --git a/pubspec.yaml b/pubspec.yaml index e2d00bad..ce8f9ac4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,6 +67,7 @@ dependencies: git: url: https://github.com/google/flutter-desktop-embedding.git path: plugins/window_size + share_plus: ^10.1.4 dependency_overrides: extended_text_field: ^16.0.0 From f009463cb9d1bd505acf3d89a563a0f4aa173e9a Mon Sep 17 00:00:00 2001 From: Mrudul-2 <147049798+Mrudul-2@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:24:06 +0530 Subject: [PATCH 02/12] button share file --- lib/widgets/button_share.dart | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lib/widgets/button_share.dart diff --git a/lib/widgets/button_share.dart b/lib/widgets/button_share.dart new file mode 100644 index 00000000..bba8c4f9 --- /dev/null +++ b/lib/widgets/button_share.dart @@ -0,0 +1,46 @@ +import 'package:apidash_design_system/apidash_design_system.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter/foundation.dart'; +import 'package:apidash/consts.dart'; +import 'package:share_plus/share_plus.dart'; + +class ShareButton extends StatelessWidget { + const ShareButton({ + super.key, + required this.toShare, + this.showLabel = true, + }); + + final String toShare; + final bool showLabel; + + @override + Widget build(BuildContext context) { + var sm = ScaffoldMessenger.of(context); + onPressed() async { + try { + final box = context.findRenderObject() as RenderBox?; + await Share.share( + toShare, + sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size, + ); + } catch (e) { + if (kDebugMode) { + print(e); + } + sm.hideCurrentSnackBar(); + sm.showSnackBar(getSnackBar("Cannot share")); + } + } + + return ADIconButton( + icon: Icons.share, + iconSize: kButtonIconSizeLarge, + tooltip: kLabelShare, + color: Theme.of(context).colorScheme.primary, + visualDensity: VisualDensity.compact, + onPressed: onPressed, + ); + } +} \ No newline at end of file From 5dfeb31bc9bc7db80ad95ddd4affd187e07837c7 Mon Sep 17 00:00:00 2001 From: Mrudul-2 <147049798+Mrudul-2@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:42:49 +0530 Subject: [PATCH 03/12] enabled only for mobile devices --- lib/widgets/button_copy.dart | 1 - lib/widgets/codegen_previewer.dart | 10 ++++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/widgets/button_copy.dart b/lib/widgets/button_copy.dart index 7de91aa5..e77c5aac 100644 --- a/lib/widgets/button_copy.dart +++ b/lib/widgets/button_copy.dart @@ -1,7 +1,6 @@ import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter/foundation.dart'; import 'package:apidash/consts.dart'; class CopyButton extends StatelessWidget { diff --git a/lib/widgets/codegen_previewer.dart b/lib/widgets/codegen_previewer.dart index 037b580f..3910b6ed 100644 --- a/lib/widgets/codegen_previewer.dart +++ b/lib/widgets/codegen_previewer.dart @@ -6,7 +6,7 @@ import 'package:apidash/consts.dart'; import 'package:apidash/utils/utils.dart'; import 'code_previewer.dart'; import 'widgets.dart' - show CopyButton, DropdownButtonCodegenLanguage, SaveInDownloadsButton; + show CopyButton,DropdownButtonCodegenLanguage, SaveInDownloadsButton; class CodeGenPreviewer extends StatefulWidget { const CodeGenPreviewer({ @@ -151,7 +151,13 @@ class ViewCodePane extends StatelessWidget { toCopy: code, showLabel: showLabel, ), - ShareButton(toShare: code), + Visibility( + visible: kIsMobile, + child: ShareButton( + toShare: code, + showLabel: showLabel, + ) + ), SaveInDownloadsButton( content: stringToBytes(code), ext: codegenLanguage.ext, From cbdfb681a0c090a3e35262fe27667f863bd72d51 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 13:39:49 +0530 Subject: [PATCH 04/12] Update button_share.dart --- lib/widgets/button_share.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/widgets/button_share.dart b/lib/widgets/button_share.dart index bba8c4f9..be08a72e 100644 --- a/lib/widgets/button_share.dart +++ b/lib/widgets/button_share.dart @@ -1,6 +1,5 @@ import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter/foundation.dart'; import 'package:apidash/consts.dart'; import 'package:share_plus/share_plus.dart'; @@ -43,4 +42,4 @@ class ShareButton extends StatelessWidget { onPressed: onPressed, ); } -} \ No newline at end of file +} From e602cf820e6180bf28b98bfc0fcc01e1be2a6869 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 13:39:55 +0530 Subject: [PATCH 05/12] Update pubspec.lock --- pubspec.lock | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pubspec.lock b/pubspec.lock index 0f9f35a4..2a8388aa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1368,6 +1368,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.3" + share_plus: + dependency: "direct main" + description: + name: share_plus + sha256: fce43200aa03ea87b91ce4c3ac79f0cecd52e2a7a56c7a4185023c271fbfa6da + url: "https://pub.dev" + source: hosted + version: "10.1.4" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b + url: "https://pub.dev" + source: hosted + version: "5.0.2" shared_preferences: dependency: "direct main" description: From 9fe88de2f883efecd15db0038b7801442bdd1e90 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 13:40:08 +0530 Subject: [PATCH 06/12] Update button_copy.dart --- lib/widgets/button_copy.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/widgets/button_copy.dart b/lib/widgets/button_copy.dart index e77c5aac..7c401d73 100644 --- a/lib/widgets/button_copy.dart +++ b/lib/widgets/button_copy.dart @@ -39,5 +39,3 @@ class CopyButton extends StatelessWidget { ); } } - - From 1340f2180ec18182fc98983aa2b026008722b27b Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 13:43:36 +0530 Subject: [PATCH 07/12] Update codegen_previewer.dart --- lib/widgets/codegen_previewer.dart | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/widgets/codegen_previewer.dart b/lib/widgets/codegen_previewer.dart index 3910b6ed..2477d965 100644 --- a/lib/widgets/codegen_previewer.dart +++ b/lib/widgets/codegen_previewer.dart @@ -4,9 +4,10 @@ import 'package:flutter/material.dart'; import 'package:highlighter/highlighter.dart' show highlight; import 'package:apidash/consts.dart'; import 'package:apidash/utils/utils.dart'; +import 'button_copy.dart'; +import 'button_save_download.dart'; import 'code_previewer.dart'; -import 'widgets.dart' - show CopyButton,DropdownButtonCodegenLanguage, SaveInDownloadsButton; +import 'dropdown_codegen.dart'; class CodeGenPreviewer extends StatefulWidget { const CodeGenPreviewer({ @@ -152,17 +153,17 @@ class ViewCodePane extends StatelessWidget { showLabel: showLabel, ), Visibility( - visible: kIsMobile, - child: ShareButton( - toShare: code, - showLabel: showLabel, - ) + visible: kIsMobile, + child: ShareButton( + toShare: code, + showLabel: showLabel, ), + ), SaveInDownloadsButton( content: stringToBytes(code), ext: codegenLanguage.ext, showLabel: showLabel, - ) + ), ], ), ), From ebedbb1172d1eb1ab945d47f091d7abf990e9841 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 13:49:34 +0530 Subject: [PATCH 08/12] Update window_utils.dart --- lib/utils/window_utils.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/utils/window_utils.dart b/lib/utils/window_utils.dart index 32445eb5..6e40a5d0 100644 --- a/lib/utils/window_utils.dart +++ b/lib/utils/window_utils.dart @@ -1,3 +1,5 @@ +import '../consts.dart'; + bool showButtonLabelsInBodySuccess(int options, double maxWidth) { switch (options) { case 0: @@ -14,5 +16,5 @@ bool showButtonLabelsInBodySuccess(int options, double maxWidth) { } bool showButtonLabelsInViewCodePane(double maxWidth) { - return (maxWidth < 450) ? false : true; + return (maxWidth < 450 || kIsMobile) ? false : true; } From 712d2d21a6cc060a827b281426faf25847df8500 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 17:24:00 +0530 Subject: [PATCH 09/12] Update consts.dart --- lib/consts.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/consts.dart b/lib/consts.dart index 7e85f457..9e14c55b 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -474,3 +474,4 @@ const kMsgNoContent = "No content"; const kMsgUnknowContentType = "Unknown Response Content-Type"; // Workspace Selector const kMsgSelectWorkspace = "Create your workspace"; +const kMsgShareError = "Unable to share"; From 01154660070867ff6b53799895a20fafdf7532ba Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 17:24:50 +0530 Subject: [PATCH 10/12] Update button_share.dart --- lib/widgets/button_share.dart | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/lib/widgets/button_share.dart b/lib/widgets/button_share.dart index be08a72e..2ce234cd 100644 --- a/lib/widgets/button_share.dart +++ b/lib/widgets/button_share.dart @@ -1,6 +1,5 @@ import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/foundation.dart'; import 'package:apidash/consts.dart'; import 'package:share_plus/share_plus.dart'; @@ -17,21 +16,6 @@ class ShareButton extends StatelessWidget { @override Widget build(BuildContext context) { var sm = ScaffoldMessenger.of(context); - onPressed() async { - try { - final box = context.findRenderObject() as RenderBox?; - await Share.share( - toShare, - sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size, - ); - } catch (e) { - if (kDebugMode) { - print(e); - } - sm.hideCurrentSnackBar(); - sm.showSnackBar(getSnackBar("Cannot share")); - } - } return ADIconButton( icon: Icons.share, @@ -39,7 +23,15 @@ class ShareButton extends StatelessWidget { tooltip: kLabelShare, color: Theme.of(context).colorScheme.primary, visualDensity: VisualDensity.compact, - onPressed: onPressed, + onPressed: () async { + sm.hideCurrentSnackBar(); + try { + await Share.share(toShare); + } catch (e) { + debugPrint("$e"); + sm.showSnackBar(getSnackBar(kMsgShareError)); + } + }, ); } } From 577ebad8d6adaafba47bcfcf4e14c05f7b9adc18 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 17:25:57 +0530 Subject: [PATCH 11/12] Update button_share.dart --- lib/widgets/button_share.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/button_share.dart b/lib/widgets/button_share.dart index 2ce234cd..bde509fa 100644 --- a/lib/widgets/button_share.dart +++ b/lib/widgets/button_share.dart @@ -1,7 +1,7 @@ import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; -import 'package:apidash/consts.dart'; import 'package:share_plus/share_plus.dart'; +import '../consts.dart'; class ShareButton extends StatelessWidget { const ShareButton({ From 23c69148806d142efcc0f1d2806f4867652bf911 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 16 Feb 2025 17:31:42 +0530 Subject: [PATCH 12/12] Update codegen_previewer.dart --- lib/widgets/codegen_previewer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/codegen_previewer.dart b/lib/widgets/codegen_previewer.dart index 2477d965..fc498513 100644 --- a/lib/widgets/codegen_previewer.dart +++ b/lib/widgets/codegen_previewer.dart @@ -1,4 +1,3 @@ -import 'package:apidash/widgets/button_share.dart'; import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:highlighter/highlighter.dart' show highlight; @@ -6,6 +5,7 @@ import 'package:apidash/consts.dart'; import 'package:apidash/utils/utils.dart'; import 'button_copy.dart'; import 'button_save_download.dart'; +import 'button_share.dart'; import 'code_previewer.dart'; import 'dropdown_codegen.dart';