diff --git a/packages/share_plus/share_plus/README.md b/packages/share_plus/share_plus/README.md
index f8d31d9406..4af5f261aa 100644
--- a/packages/share_plus/share_plus/README.md
+++ b/packages/share_plus/share_plus/README.md
@@ -26,10 +26,10 @@ Sharing files is not supported on Linux.
## Requirements
-- Flutter >=3.22.0
-- Dart >=3.4.0 <4.0.0
-- iOS >=12.0
-- macOS >=10.14
+- Flutter >=3.41.0
+- Dart >=3.11.0 <4.0.0
+- iOS >=13.0
+- macOS >=10.15
- Java 17
- Kotlin 2.2.0
- Android Gradle Plugin >=8.12.1
diff --git a/packages/share_plus/share_plus/example/ios/Flutter/AppFrameworkInfo.plist b/packages/share_plus/share_plus/example/ios/Flutter/AppFrameworkInfo.plist
index 1dc6cf7652..391a902b2b 100644
--- a/packages/share_plus/share_plus/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/packages/share_plus/share_plus/example/ios/Flutter/AppFrameworkInfo.plist
@@ -20,7 +20,5 @@
????
CFBundleVersion
1.0
- MinimumOSVersion
- 13.0
diff --git a/packages/share_plus/share_plus/example/ios/Runner/AppDelegate.swift b/packages/share_plus/share_plus/example/ios/Runner/AppDelegate.swift
index b636303481..c30b367ec0 100644
--- a/packages/share_plus/share_plus/example/ios/Runner/AppDelegate.swift
+++ b/packages/share_plus/share_plus/example/ios/Runner/AppDelegate.swift
@@ -1,13 +1,16 @@
-import UIKit
import Flutter
+import UIKit
@main
-@objc class AppDelegate: FlutterAppDelegate {
+@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
+
+ func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+ }
}
diff --git a/packages/share_plus/share_plus/example/ios/Runner/Info.plist b/packages/share_plus/share_plus/example/ios/Runner/Info.plist
index b72a8e0ab3..07e4097661 100644
--- a/packages/share_plus/share_plus/example/ios/Runner/Info.plist
+++ b/packages/share_plus/share_plus/example/ios/Runner/Info.plist
@@ -26,6 +26,29 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ NSPhotoLibraryUsageDescription
+ Load photos for sharing functionality
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneClassName
+ UIWindowScene
+ UISceneConfigurationName
+ flutter
+ UISceneDelegateClassName
+ FlutterSceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
UIApplicationSupportsIndirectInputEvents
UILaunchStoryboardName
@@ -45,8 +68,6 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- NSPhotoLibraryUsageDescription
- Load photos for sharing functionality
UIViewControllerBasedStatusBarAppearance
diff --git a/packages/share_plus/share_plus/example/lib/main.dart b/packages/share_plus/share_plus/example/lib/main.dart
index 3e4a137ba9..a7c5f1abc4 100644
--- a/packages/share_plus/share_plus/example/lib/main.dart
+++ b/packages/share_plus/share_plus/example/lib/main.dart
@@ -165,8 +165,9 @@ class MyHomePageState extends State {
},
icon: const Icon(Icons.add),
),
- if (Platform.isIOS || Platform.isMacOS) const SizedBox(height: 16),
- if (Platform.isIOS || Platform.isMacOS)
+ if (!kIsWeb && (Platform.isIOS || Platform.isMacOS))
+ const SizedBox(height: 16),
+ if (!kIsWeb && (Platform.isIOS || Platform.isMacOS))
ElevatedButton(
onPressed: _onSelectExcludedActivityType,
child: const Text('Add Excluded Activity Type'),
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 0acfd2b471..c83c626bce 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
@@ -32,8 +32,10 @@ class SharePlusLinuxPlugin extends SharePlatform {
final uri = Uri(
scheme: 'mailto',
query: queryParameters.entries
- .map((e) =>
- '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value ?? '')}')
+ .map(
+ (e) =>
+ '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value ?? '')}',
+ )
.join('&'),
);
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 c5482a707a..8889490961 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
@@ -37,10 +37,7 @@ class SharePlusWebPlugin extends SharePlatform {
try {
canShare = _navigator.canShare(data);
} on NoSuchMethodError catch (e) {
- developer.log(
- 'Share API is not supported in this User Agent.',
- error: e,
- );
+ developer.log('Share API is not supported in this User Agent.', error: e);
return _fallback(params, 'Navigator.canShare() is unavailable');
}
@@ -56,10 +53,7 @@ class SharePlusWebPlugin extends SharePlatform {
return _resultDismissed;
}
- developer.log(
- 'Failed to share uri',
- error: '${e.name}: ${e.message}',
- );
+ developer.log('Failed to share uri', error: '${e.name}: ${e.message}');
return _fallback(params, 'Navigator.share() failed: ${e.message}');
}
@@ -98,38 +92,19 @@ class SharePlusWebPlugin extends SharePlatform {
}
if (uri != null) {
- data = ShareData(
- url: uri,
- );
+ data = ShareData(url: uri);
} else if (webFiles.isNotEmpty && text != null && title != null) {
- data = ShareData(
- text: text,
- title: title,
- files: webFiles.toJS,
- );
+ data = ShareData(text: text, title: title, files: webFiles.toJS);
} else if (webFiles.isNotEmpty && text != null) {
- data = ShareData(
- text: text,
- files: webFiles.toJS,
- );
+ data = ShareData(text: text, files: webFiles.toJS);
} else if (webFiles.isNotEmpty && title != null) {
- data = ShareData(
- title: title,
- files: webFiles.toJS,
- );
+ data = ShareData(title: title, files: webFiles.toJS);
} else if (webFiles.isNotEmpty) {
- data = ShareData(
- files: webFiles.toJS,
- );
+ data = ShareData(files: webFiles.toJS);
} else if (text != null && title != null) {
- data = ShareData(
- text: text,
- title: title,
- );
+ data = ShareData(text: text, title: title);
} else {
- data = ShareData(
- text: text!,
- );
+ data = ShareData(text: text!);
}
return data;
@@ -161,17 +136,16 @@ class SharePlusWebPlugin extends SharePlatform {
throw Exception(error);
}
- final queryParameters = {
- if (subject != null) 'subject': subject,
- 'body': text,
- };
+ final queryParameters = {'subject': ?subject, 'body': text};
// see https://github.com/dart-lang/sdk/issues/43838#issuecomment-823551891
final uri = Uri(
scheme: 'mailto',
query: queryParameters.entries
- .map((e) =>
- '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value)}')
+ .map(
+ (e) =>
+ '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value)}',
+ )
.join('&'),
);
@@ -227,7 +201,4 @@ class SharePlusWebPlugin extends SharePlatform {
}
}
-const _resultDismissed = ShareResult(
- '',
- ShareResultStatus.dismissed,
-);
+const _resultDismissed = ShareResult('', ShareResultStatus.dismissed);
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 5afa595fe7..4b0a834ba6 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
@@ -39,8 +39,10 @@ class SharePlusWindowsPlugin extends SharePlatform {
final uri = Uri(
scheme: 'mailto',
query: queryParameters.entries
- .map((e) =>
- '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value ?? '')}')
+ .map(
+ (e) =>
+ '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value ?? '')}',
+ )
.join('&'),
);
diff --git a/packages/share_plus/share_plus/lib/src/windows_version_helper.dart b/packages/share_plus/share_plus/lib/src/windows_version_helper.dart
index db0ee5aff8..de610465d2 100644
--- a/packages/share_plus/share_plus/lib/src/windows_version_helper.dart
+++ b/packages/share_plus/share_plus/lib/src/windows_version_helper.dart
@@ -29,11 +29,12 @@ class VersionHelper {
..wServicePackMajor = 0
..wServicePackMinor = 0
..wSuiteMask = 0
- ..wProductType = 0
- ..wReserved = 0;
- final rtlGetVersion = DynamicLibrary.open('ntdll.dll').lookupFunction<
- Void Function(Pointer),
- void Function(Pointer)>('RtlGetVersion');
+ ..wProductType = 0;
+ final rtlGetVersion = DynamicLibrary.open('ntdll.dll')
+ .lookupFunction<
+ Void Function(Pointer),
+ void Function(Pointer)
+ >('RtlGetVersion');
rtlGetVersion(pointer);
isWindows10RS5OrGreater =
pointer.ref.dwBuildNumber >= kWindows10RS5BuildNumber;
diff --git a/packages/share_plus/share_plus/pubspec.yaml b/packages/share_plus/share_plus/pubspec.yaml
index 4b951845d1..ab3ec3864e 100644
--- a/packages/share_plus/share_plus/pubspec.yaml
+++ b/packages/share_plus/share_plus/pubspec.yaml
@@ -28,29 +28,29 @@ flutter:
pluginClass: SharePlusWindowsPluginCApi
dependencies:
- cross_file: ^0.3.4+2
- meta: ^1.8.0
- mime: ">=1.0.4 <3.0.0"
+ cross_file: ^0.3.5+2
+ meta: ^1.17.0
+ mime: ^2.0.0
flutter:
sdk: flutter
flutter_web_plugins:
sdk: flutter
share_plus_platform_interface: ^6.1.0
- file: ">=6.1.4 <8.0.0"
- url_launcher_web: ^2.3.2
- url_launcher_windows: ^3.1.2
- url_launcher_linux: ^3.1.1
+ file: ^7.0.1
+ url_launcher_web: ^2.4.2
+ url_launcher_windows: ^3.1.5
+ url_launcher_linux: ^3.2.2
url_launcher_platform_interface: ^2.3.2
- ffi: ^2.1.2
- web: ^1.0.0
- win32: ^5.5.3
+ ffi: ^2.2.0
+ web: ^1.1.1
+ win32: ^6.0.0
dev_dependencies:
flutter_test:
sdk: flutter
- flutter_lints: ">=4.0.0 <6.0.0"
+ flutter_lints: ^6.0.0
environment:
- sdk: ">=3.4.0 <4.0.0"
- flutter: ">=3.22.0"
+ sdk: ">=3.11.0 <4.0.0"
+ flutter: ">=3.41.0"
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 7a4c90743d..facd080132 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
@@ -13,9 +13,9 @@ void main() {
test('url encoding is correct for &', () async {
final mock = MockUrlLauncherPlatform();
- await SharePlusLinuxPlugin(mock).share(
- ShareParams(text: 'foo&bar', subject: 'bar&foo'),
- );
+ await SharePlusLinuxPlugin(
+ mock,
+ ).share(ShareParams(text: 'foo&bar', subject: 'bar&foo'));
expect(mock.url, 'mailto:?subject=bar%26foo&body=foo%26bar');
});
@@ -24,9 +24,9 @@ void main() {
test('url encoding is correct for spaces', () async {
final mock = MockUrlLauncherPlatform();
- await SharePlusLinuxPlugin(mock).share(
- ShareParams(text: 'foo bar', subject: 'bar foo'),
- );
+ await SharePlusLinuxPlugin(
+ mock,
+ ).share(ShareParams(text: 'foo bar', subject: 'bar foo'));
expect(mock.url, 'mailto:?subject=bar%20foo&body=foo%20bar');
});
@@ -34,9 +34,9 @@ void main() {
test('can share URI on Linux', () async {
final mock = MockUrlLauncherPlatform();
- await SharePlusLinuxPlugin(mock).share(
- ShareParams(uri: Uri.parse('http://example.com')),
- );
+ await SharePlusLinuxPlugin(
+ mock,
+ ).share(ShareParams(uri: Uri.parse('http://example.com')));
expect(mock.url, 'mailto:?body=http%3A%2F%2Fexample.com');
});
diff --git a/packages/share_plus/share_plus/test/share_plus_test.dart b/packages/share_plus/share_plus/test/share_plus_test.dart
index 3f839fab18..eb1cba6570 100644
--- a/packages/share_plus/share_plus/test/share_plus_test.dart
+++ b/packages/share_plus/share_plus/test/share_plus_test.dart
@@ -19,18 +19,17 @@ void main() {
);
});
- test('share throws ArgumentError if both uri and text are provided',
- () async {
- expect(
- () => sharePlus.share(
- ShareParams(
- uri: Uri.parse('https://example.com'),
- text: 'text',
+ test(
+ 'share throws ArgumentError if both uri and text are provided',
+ () async {
+ expect(
+ () => sharePlus.share(
+ ShareParams(uri: Uri.parse('https://example.com'), text: 'text'),
),
- ),
- throwsA(isA()),
- );
- });
+ throwsA(isA()),
+ );
+ },
+ );
test('share throws ArgumentError if text is empty', () async {
expect(
@@ -47,14 +46,19 @@ void main() {
});
test(
- 'share throws ArgumentError if fileNameOverrides length does not match files length',
- () async {
- expect(
- () => sharePlus.share(ShareParams(
- files: [XFile('path')], fileNameOverrides: ['name1', 'name2'])),
- throwsA(isA()),
- );
- });
+ 'share throws ArgumentError if fileNameOverrides length does not match files length',
+ () async {
+ expect(
+ () => sharePlus.share(
+ ShareParams(
+ files: [XFile('path')],
+ fileNameOverrides: ['name1', 'name2'],
+ ),
+ ),
+ throwsA(isA()),
+ );
+ },
+ );
test('share calls platform share method with correct params', () async {
final params = ShareParams(text: 'text');
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 e4038762fe..52017903bf 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
@@ -7,23 +7,15 @@ import 'package:share_plus_platform_interface/share_plus_platform_interface.dart
import 'url_launcher_mock.dart';
void main() {
- test(
- 'registered instance',
- () {
- SharePlusWindowsPlugin.registerWith();
- expect(SharePlatform.instance, isA());
- },
- skip: VersionHelper.instance.isWindows10RS5OrGreater,
- );
+ test('registered instance', () {
+ SharePlusWindowsPlugin.registerWith();
+ expect(SharePlatform.instance, isA());
+ }, skip: VersionHelper.instance.isWindows10RS5OrGreater);
- test(
- 'registered instance',
- () {
- SharePlusWindowsPlugin.registerWith();
- expect(SharePlatform.instance, isA());
- },
- skip: !VersionHelper.instance.isWindows10RS5OrGreater,
- );
+ test('registered instance', () {
+ SharePlusWindowsPlugin.registerWith();
+ expect(SharePlatform.instance, isA());
+ }, skip: !VersionHelper.instance.isWindows10RS5OrGreater);
// These tests are only valid on Windows versions lower than 10.0.17763.0.
@@ -32,9 +24,9 @@ void main() {
() async {
final mock = MockUrlLauncherPlatform();
- await SharePlusWindowsPlugin(mock).share(
- ShareParams(text: 'foo&bar', subject: 'bar&foo'),
- );
+ await SharePlusWindowsPlugin(
+ mock,
+ ).share(ShareParams(text: 'foo&bar', subject: 'bar&foo'));
expect(mock.url, 'mailto:?subject=bar%26foo&body=foo%26bar');
},
@@ -47,9 +39,9 @@ void main() {
() async {
final mock = MockUrlLauncherPlatform();
- await SharePlusWindowsPlugin(mock).share(
- ShareParams(text: 'foo bar', subject: 'bar foo'),
- );
+ await SharePlusWindowsPlugin(
+ mock,
+ ).share(ShareParams(text: 'foo bar', subject: 'bar foo'));
expect(mock.url, 'mailto:?subject=bar%20foo&body=foo%20bar');
},
@@ -61,9 +53,9 @@ void main() {
() async {
final mock = MockUrlLauncherPlatform();
- await SharePlusWindowsPlugin(mock).share(
- ShareParams(uri: Uri.parse('http://example.com')),
- );
+ await SharePlusWindowsPlugin(
+ mock,
+ ).share(ShareParams(uri: Uri.parse('http://example.com')));
expect(mock.url, 'mailto:?body=http%3A%2F%2Fexample.com');
},
diff --git a/packages/share_plus/share_plus_platform_interface/lib/method_channel/method_channel_share.dart b/packages/share_plus/share_plus_platform_interface/lib/method_channel/method_channel_share.dart
index c4ece10e00..80d6c97e51 100644
--- a/packages/share_plus/share_plus_platform_interface/lib/method_channel/method_channel_share.dart
+++ b/packages/share_plus/share_plus_platform_interface/lib/method_channel/method_channel_share.dart
@@ -16,13 +16,15 @@ import 'package:uuid/uuid.dart';
class MethodChannelShare extends SharePlatform {
/// [MethodChannel] used to communicate with the platform side.
@visibleForTesting
- static const MethodChannel channel =
- MethodChannel('dev.fluttercommunity.plus/share');
+ static const MethodChannel channel = MethodChannel(
+ 'dev.fluttercommunity.plus/share',
+ );
@override
Future share(ShareParams params) async {
final paramsMap = await _toPlatformMap(params);
- final result = await channel.invokeMethod('share', paramsMap) ??
+ final result =
+ await channel.invokeMethod('share', paramsMap) ??
'dev.fluttercommunity.plus/share/unavailable';
return ShareResult(result, _statusFromResult(result));
@@ -51,8 +53,10 @@ class MethodChannelShare extends SharePlatform {
}
if (params.files != null) {
- final filesWithPath =
- await _getFiles(params.files!, params.fileNameOverrides);
+ final filesWithPath = await _getFiles(
+ params.files!,
+ params.fileNameOverrides,
+ );
assert(filesWithPath.every((element) => element.path.isNotEmpty));
final mimeTypes = filesWithPath
@@ -69,8 +73,9 @@ class MethodChannelShare extends SharePlatform {
if (params.excludedCupertinoActivities != null &&
params.excludedCupertinoActivities!.isNotEmpty) {
- final excludedActivityTypes =
- params.excludedCupertinoActivities!.map((e) => e.value).toList();
+ final excludedActivityTypes = params.excludedCupertinoActivities!
+ .map((e) => e.value)
+ .toList();
map['excludedCupertinoActivities'] = excludedActivityTypes;
}
@@ -114,7 +119,8 @@ class MethodChannelShare extends SharePlatform {
//Per Issue [#3032](https://github.com/fluttercommunity/plus_plugins/issues/3032): use overridden name when available.
//Per Issue [#1548](https://github.com/fluttercommunity/plus_plugins/issues/1548): attempt to use XFile.name when available
- final filename = nameOverride ??
+ final filename =
+ nameOverride ??
(filenameNotEmptyOrHasValidExt
? file.name
: "${const Uuid().v1().substring(10)}.$extension");
@@ -138,7 +144,7 @@ class MethodChannelShare extends SharePlatform {
_getFile(
files[index],
nameOverride: fileNameOverrides?.elementAt(index),
- )
+ ),
]);
}
diff --git a/packages/share_plus/share_plus_platform_interface/pubspec.yaml b/packages/share_plus/share_plus_platform_interface/pubspec.yaml
index 105531d888..77915fe96c 100644
--- a/packages/share_plus/share_plus_platform_interface/pubspec.yaml
+++ b/packages/share_plus/share_plus_platform_interface/pubspec.yaml
@@ -5,22 +5,21 @@ homepage: https://github.com/fluttercommunity/plus_plugins
repository: https://github.com/fluttercommunity/plus_plugins/tree/main/packages/
dependencies:
- cross_file: ^0.3.3+4
+ cross_file: ^0.3.5+2
flutter:
sdk: flutter
- meta: ^1.8.0
- mime: ">=1.0.4 <3.0.0"
- plugin_platform_interface: ^2.1.4
- path_provider: ^2.0.14
+ meta: ^1.17.0
+ mime: ^2.0.0
+ plugin_platform_interface: ^2.1.8
+ path_provider: ^2.1.5
uuid: ">=3.0.7 <5.0.0"
dev_dependencies:
flutter_test:
sdk: flutter
- mockito: ^5.4.0
- flutter_lints: ">=4.0.0 <6.0.0"
- test: ^1.22.0
+ mockito: ^5.6.4
+ flutter_lints: ^6.0.0
environment:
- sdk: ">=2.18.0 <4.0.0"
- flutter: ">=3.3.0"
+ sdk: ">=3.11.0 <4.0.0"
+ flutter: ">=3.41.0"
diff --git a/packages/share_plus/share_plus_platform_interface/test/share_plus_platform_interface_test.dart b/packages/share_plus/share_plus_platform_interface/test/share_plus_platform_interface_test.dart
index 18f22cf889..67c8bff9a9 100644
--- a/packages/share_plus/share_plus_platform_interface/test/share_plus_platform_interface_test.dart
+++ b/packages/share_plus/share_plus_platform_interface/test/share_plus_platform_interface_test.dart
@@ -5,12 +5,10 @@
import 'dart:io';
import 'package:flutter/services.dart';
-import 'package:flutter_test/flutter_test.dart'
- show TestDefaultBinaryMessengerBinding, TestWidgetsFlutterBinding;
+import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:share_plus_platform_interface/method_channel/method_channel_share.dart';
import 'package:share_plus_platform_interface/share_plus_platform_interface.dart';
-import 'package:test/test.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
@@ -23,12 +21,13 @@ void main() {
mockChannel = MockMethodChannel();
// Re-pipe to mockito for easier verifies.
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
- .setMockMethodCallHandler(MethodChannelShare.channel,
- (MethodCall call) async {
- // The explicit type can be void as the only method call has a return type of void.
- await mockChannel.invokeMethod(call.method, call.arguments);
- return null;
- });
+ .setMockMethodCallHandler(MethodChannelShare.channel, (
+ MethodCall call,
+ ) async {
+ // The explicit type can be void as the only method call has a return type of void.
+ await mockChannel.invokeMethod(call.method, call.arguments);
+ return null;
+ });
});
test('can set SharePlatform instance', () {
@@ -38,15 +37,9 @@ void main() {
final newInstanceId = identityHashCode(newInstance);
expect(currentId, isNot(equals(newInstanceId)));
- expect(
- identityHashCode(SharePlatform.instance),
- equals(currentId),
- );
+ expect(identityHashCode(SharePlatform.instance), equals(currentId));
SharePlatform.instance = newInstance;
- expect(
- identityHashCode(SharePlatform.instance),
- equals(newInstanceId),
- );
+ expect(identityHashCode(SharePlatform.instance), equals(newInstanceId));
});
test('sharing empty fails', () {
@@ -69,14 +62,16 @@ void main() {
excludedCupertinoActivities: [CupertinoActivityType.airDrop],
),
);
- verify(mockChannel.invokeMethod('share', {
- 'uri': 'https://pub.dev/packages/share_plus',
- 'originX': 1.0,
- 'originY': 2.0,
- 'originWidth': 3.0,
- 'originHeight': 4.0,
- 'excludedCupertinoActivities': ['airDrop'],
- }));
+ verify(
+ mockChannel.invokeMethod('share', {
+ 'uri': 'https://pub.dev/packages/share_plus',
+ 'originX': 1.0,
+ 'originY': 2.0,
+ 'originWidth': 3.0,
+ 'originHeight': 4.0,
+ 'excludedCupertinoActivities': ['airDrop'],
+ }),
+ );
await sharePlatform.share(
ShareParams(
@@ -86,14 +81,16 @@ void main() {
excludedCupertinoActivities: [],
),
);
- verify(mockChannel.invokeMethod('share', {
- 'text': 'some text to share',
- 'subject': 'some subject to share',
- 'originX': 1.0,
- 'originY': 2.0,
- 'originWidth': 3.0,
- 'originHeight': 4.0,
- }));
+ verify(
+ mockChannel.invokeMethod('share', {
+ 'text': 'some text to share',
+ 'subject': 'some subject to share',
+ 'originX': 1.0,
+ 'originY': 2.0,
+ 'originWidth': 3.0,
+ 'originHeight': 4.0,
+ }),
+ );
await withFile('tempfile-83649a.png', (File fd) async {
await sharePlatform.share(
@@ -105,9 +102,8 @@ void main() {
excludedCupertinoActivities: null,
),
);
- verify(mockChannel.invokeMethod(
- 'share',
- {
+ verify(
+ mockChannel.invokeMethod('share', {
'paths': [fd.path],
'mimeTypes': ['image/png'],
'subject': 'some subject to share',
@@ -116,32 +112,34 @@ void main() {
'originY': 2.0,
'originWidth': 3.0,
'originHeight': 4.0,
- },
- ));
+ }),
+ );
});
});
test('sharing file sets correct mimeType', () async {
await withFile('tempfile-83649b.png', (File fd) async {
await sharePlatform.share(ShareParams(files: [XFile(fd.path)]));
- verify(mockChannel.invokeMethod('share', {
- 'paths': [fd.path],
- 'mimeTypes': ['image/png'],
- }));
+ verify(
+ mockChannel.invokeMethod('share', {
+ 'paths': [fd.path],
+ 'mimeTypes': ['image/png'],
+ }),
+ );
});
});
test('sharing file sets passed mimeType', () async {
await withFile('tempfile-83649c.png', (File fd) async {
await sharePlatform.share(
- ShareParams(
- files: [XFile(fd.path, mimeType: '*/*')],
- ),
+ ShareParams(files: [XFile(fd.path, mimeType: '*/*')]),
+ );
+ verify(
+ mockChannel.invokeMethod('share', {
+ 'paths': [fd.path],
+ 'mimeTypes': ['*/*'],
+ }),
);
- verify(mockChannel.invokeMethod('share', {
- 'paths': [fd.path],
- 'mimeTypes': ['*/*'],
- }));
});
});
@@ -152,19 +150,13 @@ void main() {
);
expect(
- sharePlatform.share(
- ShareParams(text: 'some text to share'),
- ),
+ sharePlatform.share(ShareParams(text: 'some text to share')),
completion(equals(resultUnavailable)),
);
await withFile('tempfile-83649d.png', (File fd) async {
expect(
- sharePlatform.share(
- ShareParams(
- files: [XFile(fd.path)],
- ),
- ),
+ sharePlatform.share(ShareParams(files: [XFile(fd.path)])),
completion(equals(resultUnavailable)),
);
});
@@ -174,11 +166,12 @@ void main() {
// Setup mockito to return a raw result instead of null
const success = ShareResult("raw result", ShareResultStatus.success);
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
- .setMockMethodCallHandler(MethodChannelShare.channel,
- (MethodCall call) async {
- await mockChannel.invokeMethod(call.method, call.arguments);
- return success.raw;
- });
+ .setMockMethodCallHandler(MethodChannelShare.channel, (
+ MethodCall call,
+ ) async {
+ await mockChannel.invokeMethod(call.method, call.arguments);
+ return success.raw;
+ });
final result = await sharePlatform.share(
ShareParams(
@@ -187,26 +180,28 @@ void main() {
sharePositionOrigin: const Rect.fromLTWH(1.0, 2.0, 3.0, 4.0),
),
);
- verify(mockChannel.invokeMethod('share', {
- 'text': 'some text to share',
- 'subject': 'some subject to share',
- 'originX': 1.0,
- 'originY': 2.0,
- 'originWidth': 3.0,
- 'originHeight': 4.0,
- }));
+ verify(
+ mockChannel.invokeMethod('share', {
+ 'text': 'some text to share',
+ 'subject': 'some subject to share',
+ 'originX': 1.0,
+ 'originY': 2.0,
+ 'originWidth': 3.0,
+ 'originHeight': 4.0,
+ }),
+ );
expect(result, success);
await withFile('tempfile-83649e.png', (File fd) async {
final result = await sharePlatform.share(
- ShareParams(
- files: [XFile(fd.path)],
- ),
+ ShareParams(files: [XFile(fd.path)]),
+ );
+ verify(
+ mockChannel.invokeMethod('share', {
+ 'paths': [fd.path],
+ 'mimeTypes': ['image/png'],
+ }),
);
- verify(mockChannel.invokeMethod('share', {
- 'paths': [fd.path],
- 'mimeTypes': ['image/png'],
- }));
expect(result, success);
});
});
@@ -227,8 +222,9 @@ Future withFile(String filename, Future Function(File fd) func) async {
class MockMethodChannel extends Mock implements MethodChannel {
@override
Future invokeMethod(String method, [dynamic arguments]) async {
- return super
- .noSuchMethod(Invocation.method(#invokeMethod, [method, arguments]))
+ return super.noSuchMethod(
+ Invocation.method(#invokeMethod, [method, arguments]),
+ )
as dynamic;
}
}