Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-02-26 19:53:06 +08:00
parent 25a3046c3c
commit 94f05127b6
10 changed files with 64 additions and 27 deletions

View File

@@ -437,6 +437,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
// 图片分享 // 图片分享
void onShareImg(String imgUrl) async { void onShareImg(String imgUrl) async {
try {
SmartDialog.showLoading(); SmartDialog.showLoading();
var response = await Request() var response = await Request()
.get(imgUrl, options: Options(responseType: ResponseType.bytes)); .get(imgUrl, options: Options(responseType: ResponseType.bytes));
@@ -446,7 +447,20 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
"plpl_pic_${DateTime.now().toString().split('-').join()}.jpg"; "plpl_pic_${DateTime.now().toString().split('-').join()}.jpg";
var path = '${temp.path}/$imgName'; var path = '${temp.path}/$imgName';
File(path).writeAsBytesSync(response.data); File(path).writeAsBytesSync(response.data);
Share.shareXFiles([XFile(path)], subject: imgUrl);
Rect? sharePositionOrigin;
if (Platform.isIOS && (await Utils.isIpad())) {
sharePositionOrigin = Rect.fromLTWH(0, 0, Get.width, Get.height / 2);
}
Share.shareXFiles(
[XFile(path)],
subject: imgUrl,
sharePositionOrigin: sharePositionOrigin,
);
} catch (e) {
SmartDialog.showToast(e.toString());
}
} }
Widget _itemBuilder(index) { Widget _itemBuilder(index) {

View File

@@ -23,7 +23,6 @@ import 'package:PiliPlus/pages/video/detail/reply/index.dart';
import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage.dart';
import 'package:share_plus/share_plus.dart';
import 'package:html/parser.dart' as html_parser; import 'package:html/parser.dart' as html_parser;
import 'package:html/dom.dart' as dom; import 'package:html/dom.dart' as dom;
@@ -396,7 +395,7 @@ class BangumiIntroController extends CommonController {
), ),
onTap: () { onTap: () {
Get.back(); Get.back();
Share.share(videoUrl); Utils.shareText(videoUrl);
}, },
), ),
ListTile( ListTile(

View File

@@ -27,7 +27,6 @@ import 'package:PiliPlus/pages/dynamics/detail/index.dart';
import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart';
import 'package:PiliPlus/pages/video/detail/reply_reply/index.dart'; import 'package:PiliPlus/pages/video/detail/reply_reply/index.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:share_plus/share_plus.dart';
import '../../../utils/grid.dart'; import '../../../utils/grid.dart';
import '../widgets/dynamic_panel.dart'; import '../widgets/dynamic_panel.dart';
@@ -555,7 +554,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
Expanded( Expanded(
child: TextButton.icon( child: TextButton.icon(
onPressed: () { onPressed: () {
Share.share( Utils.shareText(
'${HttpString.dynamicShareBaseUrl}/${_dynamicDetailController.item.idStr}'); '${HttpString.dynamicShareBaseUrl}/${_dynamicDetailController.item.idStr}');
}, },
icon: Icon( icon: Icon(

View File

@@ -12,7 +12,6 @@ import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/utils.dart';
import 'package:share_plus/share_plus.dart';
import '../../../http/constants.dart'; import '../../../http/constants.dart';
import '../controller.dart'; import '../controller.dart';
@@ -290,7 +289,8 @@ class AuthorPanel extends StatelessWidget {
leading: const Icon(Icons.share_outlined, size: 19), leading: const Icon(Icons.share_outlined, size: 19),
onTap: () { onTap: () {
Get.back(); Get.back();
Share.share('${HttpString.dynamicShareBaseUrl}/${item.idStr}'); Utils.shareText(
'${HttpString.dynamicShareBaseUrl}/${item.idStr}');
}, },
minLeadingWidth: 0, minLeadingWidth: 0,
), ),

View File

@@ -8,7 +8,6 @@ import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/utils.dart';
import 'package:share_plus/share_plus.dart';
import '../../../http/constants.dart'; import '../../../http/constants.dart';
import '../controller.dart'; import '../controller.dart';
@@ -213,7 +212,8 @@ class MorePanel extends StatelessWidget {
leading: const Icon(Icons.share_outlined, size: 19), leading: const Icon(Icons.share_outlined, size: 19),
onTap: () { onTap: () {
Get.back(); Get.back();
Share.share('${HttpString.dynamicShareBaseUrl}/${item.idStr}'); Utils.shareText(
'${HttpString.dynamicShareBaseUrl}/${item.idStr}');
}, },
minLeadingWidth: 0, minLeadingWidth: 0,
), ),

View File

@@ -24,7 +24,6 @@ import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/models/common/reply_type.dart'; import 'package:PiliPlus/models/common/reply_type.dart';
import 'package:PiliPlus/pages/video/detail/reply_reply/index.dart'; import 'package:PiliPlus/pages/video/detail/reply_reply/index.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:share_plus/share_plus.dart';
import '../../utils/grid.dart'; import '../../utils/grid.dart';
import 'controller.dart'; import 'controller.dart';
@@ -312,7 +311,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
), ),
), ),
PopupMenuItem( PopupMenuItem(
onTap: () => Share.share(url), onTap: () => Utils.shareText(url),
child: const Row( child: const Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@@ -558,7 +557,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
Expanded( Expanded(
child: TextButton.icon( child: TextButton.icon(
onPressed: () { onPressed: () {
Share.share( Utils.shareText(
'${HttpString.dynamicShareBaseUrl}/${_htmlRenderCtr.item.value.idStr}'); '${HttpString.dynamicShareBaseUrl}/${_htmlRenderCtr.item.value.idStr}');
}, },
icon: Icon( icon: Icon(

View File

@@ -9,7 +9,6 @@ import 'package:PiliPlus/models/member/archive.dart';
import 'package:PiliPlus/models/member/coin.dart'; import 'package:PiliPlus/models/member/coin.dart';
import 'package:PiliPlus/models/member/info.dart'; import 'package:PiliPlus/models/member/info.dart';
import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage.dart';
import 'package:share_plus/share_plus.dart';
import '../video/detail/introduction/widgets/group_panel.dart'; import '../video/detail/introduction/widgets/group_panel.dart';
@@ -240,7 +239,8 @@ class MemberController extends GetxController {
} }
void shareUser() { void shareUser() {
Share.share('${memberInfo.value.name} - https://space.bilibili.com/$mid'); Utils.shareText(
'${memberInfo.value.name} - https://space.bilibili.com/$mid');
} }
// 请求专栏 // 请求专栏

View File

@@ -12,7 +12,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:share_plus/share_plus.dart';
enum MemberTabType { none, home, dynamic, contribute, favorite, bangumi } enum MemberTabType { none, home, dynamic, contribute, favorite, bangumi }
@@ -149,7 +148,7 @@ class MemberControllerNew extends CommonController
} }
void shareUser() { void shareUser() {
Share.share('https://space.bilibili.com/$mid'); Utils.shareText('https://space.bilibili.com/$mid');
} }
void _onBlock() async { void _onBlock() async {

View File

@@ -23,7 +23,6 @@ import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart';
import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage.dart';
import 'package:share_plus/share_plus.dart';
import '../../../../http/search.dart'; import '../../../../http/search.dart';
import '../../../../models/model_hot_video_item.dart'; import '../../../../models/model_hot_video_item.dart';
@@ -498,7 +497,7 @@ class VideoIntroController extends GetxController
), ),
onTap: () { onTap: () {
Get.back(); Get.back();
Share.share('${videoDetail.value.title} ' Utils.shareText('${videoDetail.value.title} '
'UP主: ${videoDetail.value.owner!.name!}' 'UP主: ${videoDetail.value.owner!.name!}'
' - $videoUrl'); ' - $videoUrl');
}, },

View File

@@ -38,6 +38,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get/get_navigation/src/dialog/dialog_route.dart'; import 'package:get/get_navigation/src/dialog/dialog_route.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:html/dom.dart' as dom; import 'package:html/dom.dart' as dom;
import 'package:html/parser.dart' as html_parser; import 'package:html/parser.dart' as html_parser;
@@ -48,6 +49,33 @@ class Utils {
static const channel = MethodChannel("PiliPlus"); static const channel = MethodChannel("PiliPlus");
static bool? _isIpad;
static Future<bool> isIpad() async {
if (_isIpad != null) {
return _isIpad!;
}
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
IosDeviceInfo info = await deviceInfo.iosInfo;
_isIpad = info.model.toLowerCase().contains("ipad");
return _isIpad!;
}
static void shareText(String text) async {
try {
Rect? sharePositionOrigin;
if (Platform.isIOS && (await isIpad())) {
sharePositionOrigin = Rect.fromLTWH(0, 0, Get.width, Get.height / 2);
}
Share.share(
text,
sharePositionOrigin: sharePositionOrigin,
);
} catch (e) {
SmartDialog.showToast(e.toString());
}
}
static void toViewPage( static void toViewPage(
String page, { String page, {
dynamic arguments, dynamic arguments,