diff --git a/packages/share_plus/share_plus/lib/src/share_plus_linux.dart b/packages/share_plus/share_plus/lib/src/share_plus_linux.dart index a0f8531942..f1cd13b7a7 100644 --- a/packages/share_plus/share_plus/lib/src/share_plus_linux.dart +++ b/packages/share_plus/share_plus/lib/src/share_plus_linux.dart @@ -19,7 +19,6 @@ class SharePlusLinuxPlugin extends SharePlatform { } /// Share text. - /// Throws a [PlatformException] if `mailto:` scheme cannot be handled. @override Future share( String text, { @@ -40,10 +39,12 @@ class SharePlusLinuxPlugin extends SharePlatform { .join('&'), ); - if (await urlLauncher.canLaunch(uri.toString())) { - await urlLauncher.launchUrl(uri.toString(), const LaunchOptions()); - } else { - throw Exception('Unable to share on web'); + final launchResult = await urlLauncher.launchUrl( + uri.toString(), + const LaunchOptions(), + ); + if (!launchResult) { + throw Exception('Failed to launch $uri'); } } diff --git a/packages/share_plus/share_plus/lib/src/share_plus_web.dart b/packages/share_plus/share_plus/lib/src/share_plus_web.dart index f1bad19f94..562f318831 100644 --- a/packages/share_plus/share_plus/lib/src/share_plus_web.dart +++ b/packages/share_plus/share_plus/lib/src/share_plus_web.dart @@ -50,10 +50,12 @@ class SharePlusWebPlugin extends SharePlatform { .join('&'), ); - if (await urlLauncher.canLaunch(uri.toString())) { - await urlLauncher.launchUrl(uri.toString(), const LaunchOptions()); - } else { - throw Exception('Unable to share on web'); + final launchResult = await urlLauncher.launchUrl( + uri.toString(), + const LaunchOptions(), + ); + if (!launchResult) { + throw Exception('Failed to launch $uri'); } } } diff --git a/packages/share_plus/share_plus/lib/src/share_plus_windows.dart b/packages/share_plus/share_plus/lib/src/share_plus_windows.dart index bc850b9252..05f49880cb 100644 --- a/packages/share_plus/share_plus/lib/src/share_plus_windows.dart +++ b/packages/share_plus/share_plus/lib/src/share_plus_windows.dart @@ -44,10 +44,12 @@ class SharePlusWindowsPlugin extends SharePlatform { .join('&'), ); - if (await urlLauncher.canLaunch(uri.toString())) { - await urlLauncher.launchUrl(uri.toString(), const LaunchOptions()); - } else { - throw Exception('Unable to share on windows'); + final launchResult = await urlLauncher.launchUrl( + uri.toString(), + const LaunchOptions(), + ); + if (!launchResult) { + throw Exception('Failed to launch $uri'); } } diff --git a/packages/share_plus/share_plus/test/share_plus_linux_test.dart b/packages/share_plus/share_plus/test/share_plus_linux_test.dart index e0800edccd..f879a7c817 100644 --- a/packages/share_plus/share_plus/test/share_plus_linux_test.dart +++ b/packages/share_plus/share_plus/test/share_plus_linux_test.dart @@ -4,6 +4,8 @@ import 'package:share_plus_platform_interface/share_plus_platform_interface.dart import 'package:url_launcher_platform_interface/link.dart'; import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart'; +import 'url_launcher_mock.dart'; + void main() { test('registered instance', () { SharePlusLinuxPlugin.registerWith(); @@ -34,34 +36,3 @@ void main() { throwsException); }); } - -class MockUrlLauncherPlatform extends UrlLauncherPlatform { - String? url; - bool canLaunchMockValue = true; - - @override - LinkDelegate? get linkDelegate => throw UnimplementedError(); - - @override - Future canLaunch(String url) async { - return canLaunchMockValue; - } - - @override - Future launch( - String url, { - required bool useSafariVC, - required bool useWebView, - required bool enableJavaScript, - required bool enableDomStorage, - required bool universalLinksOnly, - required Map headers, - String? webOnlyWindowName, - }) async { - this.url = url; - if (!canLaunchMockValue) { - throw Exception(); - } - return true; - } -} diff --git a/packages/share_plus/share_plus/test/share_plus_windows_test.dart b/packages/share_plus/share_plus/test/share_plus_windows_test.dart index 0f77ee6181..9208982c8c 100644 --- a/packages/share_plus/share_plus/test/share_plus_windows_test.dart +++ b/packages/share_plus/share_plus/test/share_plus_windows_test.dart @@ -6,6 +6,8 @@ import 'package:share_plus_platform_interface/share_plus_platform_interface.dart import 'package:url_launcher_platform_interface/link.dart'; import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart'; +import 'url_launcher_mock.dart'; + void main() { test( 'registered instance', @@ -64,31 +66,3 @@ void main() { skip: VersionHelper.instance.isWindows10RS5OrGreater, ); } - -class MockUrlLauncherPlatform extends UrlLauncherPlatform { - String? url; - bool canLaunchMockValue = true; - - @override - LinkDelegate? get linkDelegate => throw UnimplementedError(); - - @override - Future canLaunch(String url) async { - return canLaunchMockValue; - } - - @override - Future launch( - String url, { - required bool useSafariVC, - required bool useWebView, - required bool enableJavaScript, - required bool enableDomStorage, - required bool universalLinksOnly, - required Map headers, - String? webOnlyWindowName, - }) async { - this.url = url; - return true; - } -} diff --git a/packages/share_plus/share_plus/test/url_launcher_mock.dart b/packages/share_plus/share_plus/test/url_launcher_mock.dart new file mode 100644 index 0000000000..76b8026ef2 --- /dev/null +++ b/packages/share_plus/share_plus/test/url_launcher_mock.dart @@ -0,0 +1,30 @@ +import 'package:url_launcher_platform_interface/link.dart'; +import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart'; + +class MockUrlLauncherPlatform extends UrlLauncherPlatform { + String? url; + bool canLaunchMockValue = true; + + @override + LinkDelegate? get linkDelegate => throw UnimplementedError(); + + @override + Future canLaunch(String url) async { + return canLaunchMockValue; + } + + @override + Future launch( + String url, { + required bool useSafariVC, + required bool useWebView, + required bool enableJavaScript, + required bool enableDomStorage, + required bool universalLinksOnly, + required Map headers, + String? webOnlyWindowName, + }) async { + this.url = url; + return canLaunchMockValue; + } +}