我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Flutter实现仿微信分享功能的示例代码怎么写

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Flutter实现仿微信分享功能的示例代码怎么写

这期内容当中小编将会给大家带来有关Flutter实现仿微信分享功能的示例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Flutter 用来快速开发 Android iOS平台应用,在Flutter 中,通过 fluwx或者fluwx_no_pay 插件来实现微信分享功能

主要还是看自己的需求,本示例我将按照没有支付的实现。至于为什么,主要是ios打包提审比较麻烦。

那么接下来就看一下如何实现吧,

1.首先去pub官网

https://pub.flutter-io.cn/

查找这两个包

fluwx_no_pay

或者

fluwx

Flutter实现仿微信分享功能的示例代码怎么写

安装方式有两种:

方法一:

flutter pub add fluwx_no_pay

方法二:

dependencies:  fluwx_no_pay: ^3.6.1+5

然后在使用的时候导入

import 'package:fluwx_no_pay/fluwx_no_pay.dart';

虽然它集成的功能很多

但是我们只做分享的演示

2 在微信开放平台注册开发者账号以及创建你的应用程序

微信开放平台链接

开发平台文档

创建应用填写基本的应用信息后,提交微信平台审核,审核通过后

从这里拿到 AppID ,然后再将配置的 iOS 平台的 Universal Links 拿过来,至于如何获取,请查看相关资料。

3 在分享页面

3.1 初始化

  @override  void initState() {    super.initState();    _initFluwx();  }  Future _initFluwx() async {    await WxSdk.init();  }

3.2 检测微信是否安装

如点击按钮时进行分享,分享前检查一下

  bool _wxIsInstalled = false;    void _checkWx() async {    _wxIsInstalled = await WxSdk.wxIsInstalled();    refreshUI();  }

3.3 分享微信消息

 String imagePath;imagePath = await LocalImageCache.instance          .download(context, widget.cjinfo.cover, ext: ".jpg");//压缩图片,我这儿用的flutter_image_compress                          Uint8List image =                              await FlutterImageCompress.compressWithFile(                            imagePath,                            minHeight: 128,                            minWidth: 128,                            quality: 20,                            // rotate: 135,                          );                         WxSdk.ShareUrl(                                  //分享链接                                  "你的链接",                                  scene: 1,                                  thumbFile: imagePath,                                  desc: "描述",                                  title: "标题",                                );

封装的工具类

import 'dart:io';import 'dart:typed_data';import 'check.dart';import 'package:fluwx_no_pay/fluwx_no_pay.dart' as fluwx;class WxSdk {  // static bool wxIsInstalled;  static Future init() async {    fluwx.registerWxApi(        appId: "你的appid",        doOnAndroid: true,        doOnIOS: true,        universalLink: "你的universalLink");    }  static Future<bool> wxIsInstalled() async {    return await fluwx.isWeChatInstalled;  }    static void ShareImage(      {String title,      String decs,      String file,      String url,      String asset,      int scene = 1}) async {    fluwx.WeChatScene wxScene = fluwx.WeChatScene.SESSION;    if (scene == 2) {      wxScene = fluwx.WeChatScene.TIMELINE;    } else if (scene == 3) {      wxScene = fluwx.WeChatScene.FAVORITE;    }    fluwx.WeChatShareImageModel model = null;    if (file != null) {      model = fluwx.WeChatShareImageModel(fluwx.WeChatImage.file(File(file)),          title: title, description: decs, scene: wxScene);    } else if (url != null) {      model = fluwx.WeChatShareImageModel(fluwx.WeChatImage.network(url),          title: title, description: decs, scene: wxScene);    } else if (asset != null) {      model = fluwx.WeChatShareImageModel(fluwx.WeChatImage.asset(asset),          title: title, description: decs, scene: wxScene);    } else {      throw Exception("缺少图片资源信息");    }    fluwx.shareToWeChat(model);  }    static void ShareText(String content, {String title, int scene = 1}) {    fluwx.WeChatScene wxScene = fluwx.WeChatScene.SESSION;    if (scene == 2) {      wxScene = fluwx.WeChatScene.TIMELINE;    } else if (scene == 3) {      wxScene = fluwx.WeChatScene.FAVORITE;    }    fluwx.WeChatShareTextModel model =        fluwx.WeChatShareTextModel(content, title: title, scene: wxScene);    fluwx.shareToWeChat(model);  }  static void ShareVideo(String videoUrl,      {String thumbFile, String title, String desc, int scene = 1}) {    fluwx.WeChatScene wxScene = fluwx.WeChatScene.SESSION;    if (scene == 2) {      wxScene = fluwx.WeChatScene.TIMELINE;    } else if (scene == 3) {      wxScene = fluwx.WeChatScene.FAVORITE;    }    fluwx.WeChatImage image = null;    if (thumbFile != null) {      image = fluwx.WeChatImage.file(File(thumbFile));    }    var model = fluwx.WeChatShareVideoModel(        videoUrl: videoUrl,        thumbnail: image,        title: title,        description: desc,        scene: wxScene);    fluwx.shareToWeChat(model);  }    static void ShareUrl(String url,      {String thumbFile,      Uint8List thumbBytes,      String title,      String desc,      int scene = 1,      String networkThumb,      String assetThumb}) {    desc = desc ?? "";    title = title ?? "";    if (desc.length > 54) {      desc = desc.substring(0, 54) + "...";    }    if (title.length > 20) {      title = title.substring(0, 20) + "...";    }    fluwx.WeChatScene wxScene = fluwx.WeChatScene.SESSION;    if (scene == 2) {      wxScene = fluwx.WeChatScene.TIMELINE;    } else if (scene == 3) {      wxScene = fluwx.WeChatScene.FAVORITE;    }    fluwx.WeChatImage image = null;    if (thumbFile != null) {      image = fluwx.WeChatImage.file(File(thumbFile));    } else if (thumbBytes != null) {      image = fluwx.WeChatImage.binary(thumbBytes);    } else if (strNoEmpty(networkThumb)) {      image = fluwx.WeChatImage.network(Uri.encodeFull(networkThumb));    } else if (strNoEmpty(assetThumb)) {      image = fluwx.WeChatImage.asset(assetThumb, suffix: ".png");    }    var model = fluwx.WeChatShareWebPageModel(      url,      thumbnail: image,      title: title,      description: desc,      scene: wxScene,    );    fluwx.shareToWeChat(model);  }}

check.dart

/// 字符串不为空bool strNoEmpty(String value) {  if (value == null) return false;  return value.trim().isNotEmpty;}/// 字符串不为空bool mapNoEmpty(Map value) {  if (value == null) return false;  return value.isNotEmpty;}///判断List是否为空bool listNoEmpty(List list) {  if (list == null) return false;  if (list.length == 0) return false;  return true;}

//下载图片

import 'dart:convert';import 'dart:io';import 'dart:typed_data';import 'package:dio/dio.dart';import 'package:flutter/cupertino.dart';import 'package:path_provider/path_provider.dart';class LocalImageCache {  static LocalImageCache instance = LocalImageCache();  String _tmepPath = "";  void init() async {    var tempDir = await getTemporaryDirectory();    _tmepPath = tempDir.path;  }   Future<String> download(BuildContext context, String url,{String ext = ""}) async {    try {      var dio = await Dio()          .get(url, options: Options(responseType: ResponseType.bytes));      Uint8List image = Uint8List.fromList(dio.data);            return save(image, url,ext: ext);    } catch (ex) {      print("image download error:${ex.toString()}");      return null;    }  }  }

主要问题

未安装微信

ios未配置白名单

图片太大了(所以我用了压缩技术)32k

开发平台文档

Flutter实现仿微信分享功能的示例代码怎么写

上述就是小编为大家分享的Flutter实现仿微信分享功能的示例代码怎么写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Flutter实现仿微信分享功能的示例代码怎么写

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Flutter实现仿微信分享功能的示例代码怎么写

这期内容当中小编将会给大家带来有关Flutter实现仿微信分享功能的示例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Flutter 用来快速开发 Android iOS平台应用,在Flutte
2023-06-26

uniapp 实现微信小程序全局分享的示例代码怎么编写

这期内容当中小编将会给大家带来有关uniapp 实现微信小程序全局分享的示例代码怎么编写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。uniapp 实现微信小程序的全局转发给好友/分享到朋友圈的功能。主要
2023-06-22

怎么在Html5中实现微信分享功能

这期内容当中小编将会给大家带来有关怎么在Html5中实现微信分享功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、安装 weixin-js-sdknpm install weixin-js-sdk -
2023-06-09

微信小程序实现发动态功能的示例代码

最近做了一个校园拍卖小程序,想在里面添加一个类似校园圈功能,现在来一步一步实现,对微信小程序实现发动态功能感兴趣的朋友一起看看吧
2022-11-13

Java实现读写文件功能的代码分享

下面是一个示例代码实现Java的读写文件功能:```javaimport java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;impo
2023-08-11

微信小程序实现计算器功能的代码怎么写

本篇内容介绍了“微信小程序实现计算器功能的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!具体代码如下:wxml
2023-06-08

php实现分页功能的代码怎么写

以下是一个简单的PHP实现分页功能的示例代码:```php// 假设数据总数为100$total = 100;// 每页显示的数据条数$pageSize = 10;// 计算总页数$totalPage = ceil($total / $pa
2023-09-27

QT5实现UDP通信的示例代码怎么写

QT5实现UDP通信的示例代码怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言该例程经过实际验证可以正常使用,只简单的使用UDP中的单播模式(一对一),
2023-06-22

微信扫码登录功能在PHP中的实现方法分享

微信扫码登录功能在PHP中的实现方法分享随着移动互联网的快速发展,微信作为一款使用广泛的社交软件,已成为人们生活中不可或缺的一部分。为了方便用户快速登录网站,许多网站纷纷引入了微信扫码登录功能。本文将介绍如何在PHP中实现微信扫码登录功能
微信扫码登录功能在PHP中的实现方法分享
2024-03-04

golang实现数组分割的示例代码怎么写

这篇文章将为大家详细讲解有关golang实现数组分割的示例代码怎么写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不
2023-06-22

Golang Gin框架实现文件下载功能的示例代码怎么写

这期内容当中小编将会给大家带来有关Golang Gin框架实现文件下载功能的示例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Layui框架实现文件上传基本的思路就是随便创建一个元素,然后使用l
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录