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

1 回复

更多关于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;
}
回到顶部