Skip to content

Commit 1f1786c

Browse files
authored
fix(share_plus): export XFile (#1286)
1 parent 4ce5575 commit 1f1786c

File tree

10 files changed

+160
-159
lines changed

10 files changed

+160
-159
lines changed

packages/share_plus/share_plus/example/integration_test/share_plus_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import 'dart:io';
88

9-
import 'package:file_selector/file_selector.dart';
109
import 'package:flutter/services.dart';
1110
import 'package:flutter_test/flutter_test.dart';
1211
import 'package:share_plus/share_plus.dart';

packages/share_plus/share_plus/example/lib/main.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66

77
import 'dart:io';
88

9-
import 'package:file_selector/file_selector.dart';
9+
import 'package:file_selector/file_selector.dart'
10+
hide XFile; // hides to test if share_plus exports XFile
1011
import 'package:flutter/material.dart';
1112
import 'package:flutter/services.dart';
12-
import 'package:image_picker/image_picker.dart';
13+
import 'package:image_picker/image_picker.dart'
14+
hide XFile; // hides to test if share_plus exports XFile
1315
import 'package:share_plus/share_plus.dart';
1416

1517
import 'image_previews.dart';

packages/share_plus/share_plus/lib/share_plus.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
import 'dart:async';
66
import 'dart:ui';
77

8-
import 'package:cross_file/cross_file.dart';
98
import 'package:share_plus_platform_interface/share_plus_platform_interface.dart';
109

1110
export 'package:share_plus_platform_interface/share_plus_platform_interface.dart'
12-
show ShareResult, ShareResultStatus;
11+
show ShareResult, ShareResultStatus, XFile;
1312

1413
export 'src/share_plus_linux.dart';
1514
export 'src/share_plus_windows.dart'

packages/share_plus/share_plus/lib/src/share_plus_linux.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ library share_plus_linux;
33

44
import 'dart:ui';
55

6-
import 'package:cross_file/cross_file.dart';
76
import 'package:share_plus_platform_interface/share_plus_platform_interface.dart';
87
import 'package:url_launcher/url_launcher.dart';
98

packages/share_plus/share_plus/lib/src/share_plus_web.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'dart:html' as html;
22
import 'dart:typed_data';
33

4-
import 'package:cross_file/cross_file.dart';
54
import 'package:flutter/widgets.dart';
65
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
76
import 'package:mime/mime.dart' show lookupMimeType;

packages/share_plus/share_plus/lib/src/share_plus_windows.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ library share_plus_windows;
33

44
import 'dart:ui';
55

6-
import 'package:cross_file/cross_file.dart';
76
import 'package:share_plus/src/windows_version_helper.dart';
87
import 'package:share_plus_platform_interface/share_plus_platform_interface.dart';
98
import 'package:url_launcher/url_launcher.dart';

packages/share_plus/share_plus_platform_interface/lib/method_channel/method_channel_share.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'dart:io';
99
// ignore: unnecessary_import
1010
import 'dart:ui';
1111

12-
import 'package:cross_file/cross_file.dart';
1312
import 'package:flutter/services.dart';
1413
import 'package:meta/meta.dart' show visibleForTesting;
1514
import 'package:mime/mime.dart' show extensionFromMime, lookupMimeType;
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
// Copyright 2019 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'dart:async';
6+
import 'dart:ui';
7+
8+
import 'package:cross_file/cross_file.dart';
9+
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
10+
11+
import '../method_channel/method_channel_share.dart';
12+
13+
/// The interface that implementations of `share_plus` must implement.
14+
class SharePlatform extends PlatformInterface {
15+
/// Constructs a SharePlatform.
16+
SharePlatform() : super(token: _token);
17+
18+
static final Object _token = Object();
19+
20+
static SharePlatform _instance = MethodChannelShare();
21+
22+
/// The default instance of [SharePlatform] to use.
23+
///
24+
/// Defaults to [MethodChannelShare].
25+
static SharePlatform get instance => _instance;
26+
27+
/// Platform-specific plugins should set this with their own platform-specific
28+
/// class that extends [SharePlatform] when they register themselves.
29+
static set instance(SharePlatform instance) {
30+
PlatformInterface.verifyToken(instance, _token);
31+
_instance = instance;
32+
}
33+
34+
/// Share text.
35+
Future<void> share(
36+
String text, {
37+
String? subject,
38+
Rect? sharePositionOrigin,
39+
}) {
40+
return _instance.share(
41+
text,
42+
subject: subject,
43+
sharePositionOrigin: sharePositionOrigin,
44+
);
45+
}
46+
47+
/// Share files.
48+
@Deprecated("Use shareXFiles instead.")
49+
Future<void> shareFiles(
50+
List<String> paths, {
51+
List<String>? mimeTypes,
52+
String? subject,
53+
String? text,
54+
Rect? sharePositionOrigin,
55+
}) {
56+
return _instance.shareFiles(
57+
paths,
58+
mimeTypes: mimeTypes,
59+
subject: subject,
60+
text: text,
61+
sharePositionOrigin: sharePositionOrigin,
62+
);
63+
}
64+
65+
/// Share text with Result.
66+
Future<ShareResult> shareWithResult(
67+
String text, {
68+
String? subject,
69+
Rect? sharePositionOrigin,
70+
}) async {
71+
await _instance.share(
72+
text,
73+
subject: subject,
74+
sharePositionOrigin: sharePositionOrigin,
75+
);
76+
77+
return _resultUnavailable;
78+
}
79+
80+
/// Share files with Result.
81+
@Deprecated("Use shareXFiles instead.")
82+
Future<ShareResult> shareFilesWithResult(
83+
List<String> paths, {
84+
List<String>? mimeTypes,
85+
String? subject,
86+
String? text,
87+
Rect? sharePositionOrigin,
88+
}) async {
89+
await _instance.shareFiles(
90+
paths,
91+
mimeTypes: mimeTypes,
92+
subject: subject,
93+
text: text,
94+
sharePositionOrigin: sharePositionOrigin,
95+
);
96+
97+
return _resultUnavailable;
98+
}
99+
100+
/// Share [XFile] objects with Result.
101+
Future<ShareResult> shareXFiles(
102+
List<XFile> files, {
103+
String? subject,
104+
String? text,
105+
Rect? sharePositionOrigin,
106+
}) async {
107+
return _instance.shareXFiles(
108+
files,
109+
subject: subject,
110+
text: text,
111+
sharePositionOrigin: sharePositionOrigin,
112+
);
113+
}
114+
}
115+
116+
/// The result of a share to determine what action the
117+
/// user has taken.
118+
///
119+
/// [status] provides an easy way to determine how the
120+
/// share-sheet was handled by the user, while [raw] provides
121+
/// possible access to the action selected.
122+
class ShareResult {
123+
/// The raw return value from the share.
124+
///
125+
/// Note that an empty string means the share-sheet was
126+
/// dismissed without any action and the special value
127+
/// `dev.fluttercommunity.plus/share/unavailable` points
128+
/// to the current environment not supporting share results.
129+
final String raw;
130+
131+
/// The action the user has taken
132+
final ShareResultStatus status;
133+
134+
const ShareResult(this.raw, this.status);
135+
}
136+
137+
/// How the user handled the share-sheet
138+
enum ShareResultStatus {
139+
/// The user has selected an action
140+
success,
141+
142+
/// The user dismissed the share-sheet
143+
dismissed,
144+
145+
/// The status can not be determined
146+
unavailable,
147+
}
148+
149+
/// Returned if the platform is not supported
150+
const _resultUnavailable = ShareResult(
151+
'dev.fluttercommunity.plus/share/unavailable',
152+
ShareResultStatus.unavailable,
153+
);

packages/share_plus/share_plus_platform_interface/lib/share_plus_platform_interface.dart

Lines changed: 2 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -2,152 +2,5 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'dart:async';
6-
import 'dart:ui';
7-
8-
import 'package:cross_file/cross_file.dart';
9-
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
10-
11-
import 'method_channel/method_channel_share.dart';
12-
13-
/// The interface that implementations of `share_plus` must implement.
14-
class SharePlatform extends PlatformInterface {
15-
/// Constructs a SharePlatform.
16-
SharePlatform() : super(token: _token);
17-
18-
static final Object _token = Object();
19-
20-
static SharePlatform _instance = MethodChannelShare();
21-
22-
/// The default instance of [SharePlatform] to use.
23-
///
24-
/// Defaults to [MethodChannelShare].
25-
static SharePlatform get instance => _instance;
26-
27-
/// Platform-specific plugins should set this with their own platform-specific
28-
/// class that extends [SharePlatform] when they register themselves.
29-
static set instance(SharePlatform instance) {
30-
PlatformInterface.verifyToken(instance, _token);
31-
_instance = instance;
32-
}
33-
34-
/// Share text.
35-
Future<void> share(
36-
String text, {
37-
String? subject,
38-
Rect? sharePositionOrigin,
39-
}) {
40-
return _instance.share(
41-
text,
42-
subject: subject,
43-
sharePositionOrigin: sharePositionOrigin,
44-
);
45-
}
46-
47-
/// Share files.
48-
@Deprecated("Use shareXFiles instead.")
49-
Future<void> shareFiles(
50-
List<String> paths, {
51-
List<String>? mimeTypes,
52-
String? subject,
53-
String? text,
54-
Rect? sharePositionOrigin,
55-
}) {
56-
return _instance.shareFiles(
57-
paths,
58-
mimeTypes: mimeTypes,
59-
subject: subject,
60-
text: text,
61-
sharePositionOrigin: sharePositionOrigin,
62-
);
63-
}
64-
65-
/// Share text with Result.
66-
Future<ShareResult> shareWithResult(
67-
String text, {
68-
String? subject,
69-
Rect? sharePositionOrigin,
70-
}) async {
71-
await _instance.share(
72-
text,
73-
subject: subject,
74-
sharePositionOrigin: sharePositionOrigin,
75-
);
76-
77-
return _resultUnavailable;
78-
}
79-
80-
/// Share files with Result.
81-
@Deprecated("Use shareXFiles instead.")
82-
Future<ShareResult> shareFilesWithResult(
83-
List<String> paths, {
84-
List<String>? mimeTypes,
85-
String? subject,
86-
String? text,
87-
Rect? sharePositionOrigin,
88-
}) async {
89-
await _instance.shareFiles(
90-
paths,
91-
mimeTypes: mimeTypes,
92-
subject: subject,
93-
text: text,
94-
sharePositionOrigin: sharePositionOrigin,
95-
);
96-
97-
return _resultUnavailable;
98-
}
99-
100-
/// Share [XFile] objects with Result.
101-
Future<ShareResult> shareXFiles(
102-
List<XFile> files, {
103-
String? subject,
104-
String? text,
105-
Rect? sharePositionOrigin,
106-
}) async {
107-
return _instance.shareXFiles(
108-
files,
109-
subject: subject,
110-
text: text,
111-
sharePositionOrigin: sharePositionOrigin,
112-
);
113-
}
114-
}
115-
116-
/// The result of a share to determine what action the
117-
/// user has taken.
118-
///
119-
/// [status] provides an easy way to determine how the
120-
/// share-sheet was handled by the user, while [raw] provides
121-
/// possible access to the action selected.
122-
class ShareResult {
123-
/// The raw return value from the share.
124-
///
125-
/// Note that an empty string means the share-sheet was
126-
/// dismissed without any action and the special value
127-
/// `dev.fluttercommunity.plus/share/unavailable` points
128-
/// to the current environment not supporting share results.
129-
final String raw;
130-
131-
/// The action the user has taken
132-
final ShareResultStatus status;
133-
134-
const ShareResult(this.raw, this.status);
135-
}
136-
137-
/// How the user handled the share-sheet
138-
enum ShareResultStatus {
139-
/// The user has selected an action
140-
success,
141-
142-
/// The user dismissed the share-sheet
143-
dismissed,
144-
145-
/// The status can not be determined
146-
unavailable,
147-
}
148-
149-
/// Returned if the platform is not supported
150-
const _resultUnavailable = ShareResult(
151-
'dev.fluttercommunity.plus/share/unavailable',
152-
ShareResultStatus.unavailable,
153-
);
5+
export 'package:cross_file/cross_file.dart';
6+
export 'platform_interface/share_plus_platform.dart';

packages/share_plus/share_plus_platform_interface/test/share_plus_platform_interface_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import 'dart:io';
66

7-
import 'package:cross_file/cross_file.dart';
87
import 'package:flutter/services.dart';
98
import 'package:flutter_test/flutter_test.dart'
109
show TestDefaultBinaryMessengerBinding, TestWidgetsFlutterBinding;

0 commit comments

Comments
 (0)