dl_share_plugin 0.0.1 copy "dl_share_plugin: ^0.0.1" to clipboard
dl_share_plugin: ^0.0.1 copied to clipboard

share media via wechat & dingtalk

example/lib/main.dart

import 'dart:async';

import 'package:dl_share_plugin/enums.dart';
import 'package:dl_share_plugin/share_api.pigeon.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
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with ShareFlutterApiImpl {
  String _platformVersion = 'Unknown';

  pigoneShare.ShareHostApi? hostApi;

  @override
  void shareCallBack(ShareEnumContainer enumContainer, String message) {
    if (enumContainer.shareStatus == ShareStatus.SUCCESS.value) {
      print(">>>>>>在平台:  ${enumContainer.sharePlatform} 上分享成功");
    }
  }

  @override
  void initState() {
    super.initState();

    Future.delayed(Duration(milliseconds: 1000), () {
      initPlatformState();
      UnifyShare.init(wxAppId: "", androidPackageName: "");
/*      pigoneShare.ShareFlutterApi.setup(this);
      hostApi = pigoneShare.ShareHostApi();*/
    });
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {}

  void clickNetImage() async {
/*    var picker = ImagePicker();
    var future = await picker.pickImage(source: ImageSource.camera);*/
    String tempDir = await PathProviderAndroid().getExternalStoragePath() ?? '';
    ShareBody shareBody = ShareBody(
      shareType: ShareType.IMG_LOCAL.value,
      mLocalPath: "$tempDir/2222.png",
    );
    UnifyShare.instance
        ?.platform(SharePlatform.DD)
        ?.shareType(ShareType.IMG_URL)
        ?.content(shareBody)
        ?.startShare(shareCallback: (platfrom, shareStatus) {});
  }

  // void clickSaveImg() async {
  //   Completer<Uint8List> completer = Completer();
  //   RenderRepaintBoundary render = _globalWaterKey.currentContext!
  //       .findRenderObject() as RenderRepaintBoundary;
  //   ui.Image image = await render.toImage(pixelRatio: 1.0);
  //   ByteData? byteData = await image.toByteData(format: ImageByteFormat.png);
  //   completer.complete(byteData?.buffer.asUint8List());
  //   String tempDir;
  //   tempDir = await PathProviderAndroid().getExternalStoragePath() ?? '';
  //   var file = File('$tempDir/image_${DateTime.now().microsecond}.png');
  //   Uint8List imgbytes = await completer.future;
  //   file.writeAsBytes(imgbytes);
  //   print("得到的图片地址是: " + file.path);
  // }

  void clickShareImage() async {
/*    var picker = ImagePicker();
    var future = await picker.pickImage(source: ImageSource.camera);*/
    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 register() {}

  @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();
                // hostApi?.isDingTalkInstalled();
              },
              child: Container(
                margin: EdgeInsets.only(top: 20),
                color: Colors.green,
                width: double.infinity,
                height: 40,
                alignment: Alignment.center,
                child: Text("检查安装"),
              ),
            ),
            InkWell(
              onTap: () {
                // clickSaveImg();
              },
              child: Container(
                margin: EdgeInsets.only(top: 20),
                color: Colors.green,
                width: double.infinity,
                height: 40,
                alignment: Alignment.center,
                child: Text("保存图片"),
              ),
            ),
            /*          InkWell(
              onTap: () {
                clickNetImage();
              },
              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("微信分享图片"),
              ),
            ),
            InkWell(
              onTap: () {},
              child: Container(
                margin: EdgeInsets.only(top: 20),
                color: Colors.green,
                width: double.infinity,
                height: 40,
                alignment: Alignment.center,
                child: Text("QQ分享图片"),
              ),
            ),
            InkWell(
              onTap: () {},
              child: Container(
                margin: EdgeInsets.only(top: 20),
                color: Colors.green,
                width: double.infinity,
                height: 40,
                alignment: Alignment.center,
                child: Text("测试链接"),
              ),
            ),
            // images()
          ],
        ),
      ),
    );
  }

  void wxShareImage() 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.WECHAT)
        ?.shareType(ShareType.IMG_LOCAL)
        ?.content(shareBody)
        ?.startShare(shareCallback: (platfrom, shareStatus) {
      print("分享拿到回调了 ");
    });
  }

  @override
  void isAppInstallCallBack(bool isInstall) {
    if (isInstall) {
      print("!!!得到的回调是:  ${isInstall}");
    }
  }
}
1
likes
140
points
14
downloads

Publisher

unverified uploader

Weekly Downloads

share media via wechat & dingtalk

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on dl_share_plugin

Packages that implement dl_share_plugin