Flutter社交分享功能插件dl_share_plugin的使用
Flutter社交分享功能插件dl_share_plugin的使用
简介
dl_share_plugin
是一个用于实现社交分享功能的 Flutter 插件。它支持多种社交平台的分享,包括钉钉(DD)、微信(WECHAT)等。
使用指南
初始化插件
首先,确保在 pubspec.yaml
文件中添加 dl_share_plugin
依赖:
dependencies:
dl_share_plugin: ^版本号
然后,在项目的入口文件中初始化插件:
import 'package:dl_share_plugin/share_flutter_api_impl.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with ShareFlutterApiImpl {
[@override](/user/override)
void initState() {
super.initState();
Future.delayed(Duration(milliseconds: 1000), () {
initPlatformState();
});
}
// 平台消息异步初始化
Future<void> initPlatformState() async {}
}
分享本地图片
钉钉分享本地图片
void clickShareImage() async {
String tempDir = await PathProviderAndroid().getExternalStoragePath() ?? '';
print("tempDir: $tempDir");
ShareBody shareBody = ShareBody(
shareType: ShareType.IMG_LOCAL.value,
mLocalPath: "$tempDir/image_597.png",
);
UnifyShare.instance
?.platform(SharePlatform.DD)
?.shareType(ShareType.IMG_LOCAL)
?.content(shareBody)
?.startShare(shareCallback: (platfrom, shareStatus) {
print("分享拿到回调了 ");
});
}
微信分享图片
void wxShareImage() async {
ShareBody shareBody = ShareBody(
shareType: ShareType.IMG_LOCAL.value,
mLocalPath: "tempDir/image_597.png",
);
UnifyShare.instance
?.platform(SharePlatform.WECHAT)
?.shareType(ShareType.IMG_LOCAL)
?.content(shareBody)
?.startShare(shareCallback: (platfrom, shareStatus) {
print("分享拿到回调了 ");
});
}
检查平台安装状态
InkWell(
onTap: () {
UnifyShare.instance
?.platform(SharePlatform.WECHAT)
?.checkPlatformInstall();
},
child: Container(
margin: EdgeInsets.only(top: 20),
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("检查安装"),
),
)
授权请求
InkWell(
onTap: () {
DlPermissionUtil.checkPermission([Permission.storage], onSuccess: () {}, onFailed: () {});
},
child: Container(
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("授权"),
),
)
完整示例代码
以下是完整的示例代码,展示了如何使用 dl_share_plugin
实现社交分享功能。
import 'dart:async';
import 'package:dl_share_plugin/enums.dart';
import 'package:dl_share_plugin/share_api.pigeon.dart' as pigoneShare;
import 'package:dl_share_plugin/share_flutter_api_impl.dart';
import 'package:dl_share_plugin/unify_share.dart';
import 'package:flutter/material.dart';
import 'package:path_provider_android/path_provider_android.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:share_example/permission_util.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with ShareFlutterApiImpl {
String _platformVersion = 'Unknown';
pigoneShare.ShareHostApi? hostApi;
[@override](/user/override)
void shareCallBack(ShareEnumContainer enumContainer, String message) {
if (enumContainer.shareStatus == ShareStatus.SUCCESS.value) {
print(">>>在平台: ${enumContainer.sharePlatform} 上分享成功");
}
}
[@override](/user/override)
void initState() {
super.initState();
Future.delayed(Duration(milliseconds: 1000), () {
initPlatformState();
UnifyShare.init(wxAppId: "", androidPackageName: "");
});
}
// 平台消息异步初始化
Future<void> initPlatformState() async {}
void clickShareImage() async {
String tempDir = await PathProviderAndroid().getExternalStoragePath() ?? '';
print("tempDir: $tempDir");
ShareBody shareBody = ShareBody(
shareType: ShareType.IMG_LOCAL.value,
mLocalPath: "$tempDir/image_597.png",
);
UnifyShare.instance
?.platform(SharePlatform.DD)
?.shareType(ShareType.IMG_LOCAL)
?.content(shareBody)
?.startShare(shareCallback: (platfrom, shareStatus) {
print("分享拿到回调了 ");
});
}
void wxShareImage() async {
ShareBody shareBody = ShareBody(
shareType: ShareType.IMG_LOCAL.value,
mLocalPath: "tempDir/image_597.png",
);
UnifyShare.instance
?.platform(SharePlatform.WECHAT)
?.shareType(ShareType.IMG_LOCAL)
?.content(shareBody)
?.startShare(shareCallback: (platfrom, shareStatus) {
print("分享拿到回调了 ");
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Column(
children: [
InkWell(
onTap: () {
DlPermissionUtil.checkPermission([Permission.storage], onSuccess: () {}, onFailed: () {});
},
child: Container(
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("授权"),
),
),
InkWell(
onTap: () {},
child: Container(
margin: EdgeInsets.only(top: 20),
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("注册"),
),
),
InkWell(
onTap: () {
UnifyShare.instance
?.platform(SharePlatform.WECHAT)
?.checkPlatformInstall();
},
child: Container(
margin: EdgeInsets.only(top: 20),
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("检查安装"),
),
),
InkWell(
onTap: () {
clickShareImage();
},
child: Container(
margin: EdgeInsets.only(top: 20),
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("钉钉分享本地图片"),
),
),
InkWell(
onTap: () {
wxShareImage();
},
child: Container(
margin: EdgeInsets.only(top: 20),
color: Colors.green,
width: double.infinity,
height: 40,
alignment: Alignment.center,
child: Text("微信分享图片"),
),
),
],
),
),
);
}
}
更多关于Flutter社交分享功能插件dl_share_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter社交分享功能插件dl_share_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
dl_share_plugin
是一个用于 Flutter 的社交分享插件,它允许你在应用中轻松地分享内容到各种社交媒体平台,如微信、QQ、微博等。以下是如何在 Flutter 项目中使用 dl_share_plugin
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 dl_share_plugin
的依赖:
dependencies:
flutter:
sdk: flutter
dl_share_plugin: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 dl_share_plugin
:
import 'package:dl_share_plugin/dl_share_plugin.dart';
3. 初始化插件
在分享之前,通常需要初始化插件。你可以在 initState
或其他合适的地方进行初始化:
[@override](/user/override)
void initState() {
super.initState();
DlSharePlugin.initialize();
}
4. 分享内容
你可以使用 DlSharePlugin
来分享文本、图片、链接等内容。以下是一些常见的分享示例:
分享文本
DlSharePlugin.shareText("Check out this awesome app!", platform: SharePlatform.wechat);
分享图片
DlSharePlugin.shareImage("https://example.com/image.png", platform: SharePlatform.wechat);
分享链接
DlSharePlugin.shareLink("https://example.com", platform: SharePlatform.wechat);
5. 选择分享平台
dl_share_plugin
支持多种社交平台,你可以通过 platform
参数指定分享的平台。以下是一些支持的平台:
SharePlatform.wechat
: 微信SharePlatform.qq
: QQSharePlatform.weibo
: 微博SharePlatform.system
: 系统分享
6. 处理分享结果
你可以通过 Future
来处理分享的结果:
DlSharePlugin.shareText("Hello, world!", platform: SharePlatform.wechat).then((result) {
if (result == ShareResult.success) {
print("分享成功");
} else {
print("分享失败");
}
});
7. 处理权限
在某些平台上,分享功能可能需要特定的权限。请确保你的应用已经获取了必要的权限,并在 AndroidManifest.xml
和 Info.plist
中添加相应的配置。
8. 其他功能
dl_share_plugin
还支持其他功能,如分享到朋友圈、分享到QQ空间等。你可以查看插件的文档以获取更多详细信息。
示例代码
以下是一个完整的示例,展示如何在 Flutter 应用中使用 dl_share_plugin
分享文本到微信:
import 'package:flutter/material.dart';
import 'package:dl_share_plugin/dl_share_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Share Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
DlSharePlugin.shareText("Check out this awesome app!", platform: SharePlatform.wechat).then((result) {
if (result == ShareResult.success) {
print("分享成功");
} else {
print("分享失败");
}
});
},
child: Text('Share to WeChat'),
),
),
),
);
}
}