flutter 使用fluwx进行分享

2,458 阅读1分钟
fluwx是基于微信分享的一个组件
可以支持分享图片,小程序,文本,支付,以及登录等

一、首先要在yaml中引入fluwx

fluwx: ^版本号

二、在使用正式的分享之前,需要先调用下init

initFluwx() async {
    await fluwx.registerWxApi(
        appId: "wx83c491ea494cacb1",
        doOnAndroid: true,
        doOnIOS: false,
    );
    var result = await fluwx.isWeChatInstalled();
    print("is installed $result");
} 
clean -d -f
这里需要注意的是,appId需要和微信后台设置的一致

三、分享图片

首先要在使用的页面做引入:
import 'package:fluwx/fluwx.dart' as fluwx;
首先要在使用的页面做引入:
import 'package:fluwx/fluwx.dart' as fluwx;
1、分享本地图片
fluwx.shareToWeChat(
    WeChatShareImageModelt(
        image: 'assets://images...png',
        transaction: 'test',
        scene: scene,
        description: "image"
    )
);
2、分享网络图片
fluwx.shareToWeChat(
    WeChatShareImageModelt(
        WeChatImage.network(“https://c-ssl.duitang.com/uploads/item/202004/15/20200415174537_ZzvUZ.thumb.1000_0.jpeg")
        thumbnail:"assets://images/logo.png"
    )
);
3、分享数据图片
fluwx.shareToWeChat(
    fluwx.WeChatShareImageModel.fromUint8List(
        transaction: 'test’,
        imageData: pngBytes, //uint8List的格式的图片信息
        scene: fluwx.WeChatScene.TIMELINE, //
        description: 'image',
    )
);
4、从文件图片
final tempDir = await getTemporaryDiretory();
String path = ‘${tempDir.path}/image.jpg’;final file = await File(path).create(); file.writeAsBytesSync(pngBytes); //将二进制文件写入文件地址内fluwx.shareToWeChat(
    fluwx.WeChatShareImageModel.fromFile(
        file,    //flie文件        transaction: 'test’,
        imageData: pngBytes, //uint8List的格式的图片信息
        scene: fluwx.WeChatScene.TIMELINE, //分享到位置
        description: 'image',
    )
);

二、分享小程序

var model = fluwx.WeChatShareMiniProgramModel(
    webPageUrl: “----",
    miniProgramType: fluwx.WXMiniProgramType.PREVIEW,
    userName: “----", //小程序的id
    title: “---",
    path: “----",
    description: "description",
    thumbnail: "https://c-ssl.duitang.com/uploads/item/202004/15/20200415174537_ZzvUZ.thumb.1000_0.jpeg" //缩略图
);
fluwx.shareToWeChat(model); //这一步是分享
下面是微信的安卓sdk,
可以对照发现fluwx的userName取得实际是小程序的id
WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();
miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接
miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,测试版:1,体验版:2
miniProgramObj.userName = "gh_d43f693ca31f";     // 小程序原始id
miniProgramObj.path = "/pages/media";            //小程序页面路径;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"
WXMediaMessage msg = new WXMediaMessage(miniProgramObj);
msg.title = "小程序消息Title";                    // 小程序消息title
msg.description = "小程序消息Desc";               // 小程序消息desc
msg.thumbData = getThumb();                      // 小程序消息封面图片,小于128k
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("miniProgram");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前只支持会话
api.sendReq(req);