Flutter钉钉集成插件flutter_dingtalk的使用
Flutter钉钉集成插件flutter_dingtalk的使用
钉钉 Flutter 插件,支持iOS,Android 端授权 支持null-safe。按照钉钉官方文档配置项目。
参考钉钉官方文档
使用
// 注册钉钉插件
FlutterDingtalk.registerApp('Your AppId', 'Your IOS BundleId')
// 钉钉是否安装
FlutterDingtalk.isDDAppInstalled()
// 钉钉授权
FlutterDingtalk.sendDDAppAuth('state');
// 分享文本
FlutterDingtalk.sendTextMessage('分享文本');
// 分享图片
FlutterDingtalk.sendImageMessage(picUrl:'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png');
// 分享链接
FlutterDingtalk.sendWebPageMessage('https://www.baidu.com/', title: '标题', content: '描述2333',
thumbUrl:'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png');
// 回调
FlutterDingtalk.ddResponseEventHandler.listen((resp) async {
// 授权回调信息
if (resp is DDShareAuthResponse) {
print('授权回调信息====> code: ${resp.code} state:${resp.state}');
}
});
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_dingtalk/flutter_dingtalk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// 平台消息是异步的,因此我们通过异步方法进行初始化。
Future<void> initPlatformState() async {
String platformVersion;
// 平台消息可能会失败,所以我们使用 try/catch PlatformException。
try {
platformVersion = await FlutterDingtalk.platformVersion;
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// 如果在异步平台消息飞行时小部件从树中移除,我们应该丢弃回复而不是调用setState来更新我们的非存在的外观。
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Text('运行在: $_platformVersion\n'),
),
),
);
}
}
更多关于Flutter钉钉集成插件flutter_dingtalk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter钉钉集成插件flutter_dingtalk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_dingtalk
是一个用于在 Flutter 应用中集成钉钉功能的插件。通过这个插件,你可以方便地在 Flutter 应用中实现钉钉登录、分享等功能。以下是如何在 Flutter 项目中使用 flutter_dingtalk
插件的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_dingtalk
插件的依赖。
dependencies:
flutter:
sdk: flutter
flutter_dingtalk: ^1.0.0 # 请根据实际情况使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 配置 Android 项目
2.1 添加钉钉 SDK 依赖
在 Android 项目的 build.gradle
文件中,添加钉钉 SDK 的依赖。
dependencies {
implementation 'com.alibaba.android:ddsharesdk:latest.integration'
}
2.2 配置 AndroidManifest.xml
在 AndroidManifest.xml
文件中,添加以下权限和 Activity:
<uses-permission android:name="android.permission.INTERNET" />
<application>
<activity
android:name="com.alibaba.laiwang.tide.share.activity.ShareActionActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
3. 配置 iOS 项目
3.1 添加钉钉 SDK 依赖
在 iOS 项目的 Podfile
中添加钉钉 SDK 的依赖:
pod 'DingTalkOpenSDK'
然后运行 pod install
来安装依赖。
3.2 配置 Info.plist
在 Info.plist
中添加以下配置:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>dingtalk</string>
<string>dingtalk-open</string>
</array>
4. 使用 flutter_dingtalk
插件
在 Flutter 代码中,你可以使用 flutter_dingtalk
插件来实现钉钉登录、分享等功能。
4.1 钉钉登录
import 'package:flutter_dingtalk/flutter_dingtalk.dart';
// 初始化钉钉 SDK
await FlutterDingtalk.init('your_app_id');
// 钉钉登录
try {
final auth = await FlutterDingtalk.login();
print('Login success: ${auth.toJson()}');
} catch (e) {
print('Login failed: $e');
}
4.2 钉钉分享
import 'package:flutter_dingtalk/flutter_dingtalk.dart';
// 初始化钉钉 SDK
await FlutterDingtalk.init('your_app_id');
// 分享文本
try {
await FlutterDingtalk.shareText('Hello, DingTalk!');
print('Share success');
} catch (e) {
print('Share failed: $e');
}
5. 处理回调
在 Android 和 iOS 中,你需要处理钉钉的回调。
5.1 Android
在 MainActivity
中重写 onActivityResult
方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
FlutterDingtalkPlugin.getInstance().onActivityResult(requestCode, resultCode, data);
}
5.2 iOS
在 AppDelegate
中实现以下方法:
#import <DingTalkOpenSDK/DingTalkOpenSDK.h>
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if ([DingTalkOpenSDK handleOpenURL:url]) {
return YES;
}
return NO;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
if ([DingTalkOpenSDK handleOpenURL:url]) {
return YES;
}
return NO;
}