Flutter钉钉集成插件dingtalk_sdk_fork的使用

Flutter钉钉集成插件dingtalk_sdk_fork的使用

获取开始

这个项目是一个新的Flutter插件项目。它包含用于Android和/或iOS平台的特定平台实现代码。

对于Flutter开发的帮助,可以查看官方文档,其中包含了教程、示例、移动开发指南以及完整的API参考。

示例代码

以下是一个简单的示例代码,展示了如何在Flutter应用中使用dingtalk_sdk_fork插件。

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:dingtalk_sdk_fork/dingtalk_sdk.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> {
  String _platformVersion = 'Unknown';
  final _dingtalkSdkPlugin = DingtalkSdk();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用try/catch来捕获PlatformException。
    // 我们还处理了消息可能返回null的情况。
    try {
      platformVersion = await _dingtalkSdkPlugin.getPlatformVersion() ?? 
                        'Unknown platform version';
    } 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钉钉集成插件dingtalk_sdk_fork的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter钉钉集成插件dingtalk_sdk_fork的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dingtalk_sdk_fork 是一个用于在 Flutter 应用中集成钉钉功能的插件。它允许你在 Flutter 应用中调用钉钉的登录、分享、支付等功能。以下是使用 dingtalk_sdk_fork 的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 dingtalk_sdk_fork 依赖:

dependencies:
  flutter:
    sdk: flutter
  dingtalk_sdk_fork: ^1.0.0 # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 配置 Android 和 iOS 项目

Android 配置

android/app/build.gradle 文件中,确保 minSdkVersion 至少为 16:

defaultConfig {
    minSdkVersion 16
    targetSdkVersion 30
}

iOS 配置

ios/Runner/Info.plist 文件中,添加以下配置以支持钉钉的 URL Scheme:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>钉钉</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>dingtalk</string>
            <string>dingtalk-sdk</string>
        </array>
    </dict>
</array>

3. 初始化钉钉 SDK

在你的 Flutter 应用中,初始化钉钉 SDK。通常你可以在 main.dart 中的 main 函数中进行初始化:

import 'package:dingtalk_sdk_fork/dingtalk_sdk_fork.dart';

void main() {
  DingtalkSdk.init(
    appId: 'your_app_id', // 你的钉钉应用 ID
    appScheme: 'dingtalk', // 你的应用 Scheme
  );
  runApp(MyApp());
}

4. 使用钉钉功能

钉钉登录

你可以使用 DingtalkSdk 提供的 auth 方法进行钉钉登录:

import 'package:dingtalk_sdk_fork/dingtalk_sdk_fork.dart';

Future<void> loginWithDingtalk() async {
  try {
    AuthResponse response = await DingtalkSdk.auth(
      redirectUri: 'your_redirect_uri', // 你的回调 URL
    );
    print('Login success: ${response.toJson()}');
  } catch (e) {
    print('Login failed: $e');
  }
}

钉钉分享

你可以使用 DingtalkSdk 提供的 share 方法进行分享:

import 'package:dingtalk_sdk_fork/dingtalk_sdk_fork.dart';

Future<void> shareToDingtalk() async {
  try {
    ShareResponse response = await DingtalkSdk.share(
      title: '分享标题',
      content: '分享内容',
      url: 'https://www.example.com',
    );
    print('Share success: ${response.toJson()}');
  } catch (e) {
    print('Share failed: $e');
  }
}

钉钉支付

你可以使用 DingtalkSdk 提供的 pay 方法进行支付:

import 'package:dingtalk_sdk_fork/dingtalk_sdk_fork.dart';

Future<void> payWithDingtalk() async {
  try {
    PayResponse response = await DingtalkSdk.pay(
      orderId: 'your_order_id', // 你的订单 ID
      amount: '100', // 支付金额
    );
    print('Pay success: ${response.toJson()}');
  } catch (e) {
    print('Pay failed: $e');
  }
}

5. 处理回调

在 Android 和 iOS 中,你需要处理钉钉的回调。确保你的 MainActivityAppDelegate 中正确处理了钉钉的回调。

Android

MainActivity.kt 中:

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import com.dingtalk.sdk.DingtalkSdkPlugin

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        DingtalkSdkPlugin.registerWith(flutterEngine.dartExecutor.binaryMessenger)
    }
}

iOS

AppDelegate.swift 中:

import UIKit
import Flutter

[@UIApplicationMain](/user/UIApplicationMain)
[@objc](/user/objc) class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }

  override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    if DingtalkSdk.handleOpen(url) {
      return true
    }
    return super.application(app, open: url, options: options)
  }
}
回到顶部