123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import 'dart:async';
- import 'dart:io';
- import 'package:dio/dio.dart';
- import 'package:flutter/material.dart';
- import 'package:path_provider/path_provider.dart';
- import 'package:tencent_kit/tencent_kit.dart';
- import 'package:wechat_kit/wechat_kit.dart';
- import '../utils/toast.dart';
- const String WECHAT_APPID = 'wx9455bd2742259ef7';
- const String WECHAT_UNIVERSAL_LINK = 'your wechat universal link'; // iOS 请配置
- const String WECHAT_APPSECRET = 'c58946da98393252077073c29c828d08';
- const String WECHAT_MINIAPPID = 'your wechat miniAppId';
- typedef WeChatLogin = void Function(String code);
- mixin WechatMixin<T extends StatefulWidget> on State<T> {
- Wechat _wechat;
- StreamSubscription<WechatAuthResp> _auth;
- StreamSubscription<WechatSdkResp> _share;
- StreamSubscription<WechatPayResp> _pay;
- StreamSubscription<WechatLaunchMiniProgramResp> _miniProgram;
- WechatAuthResp _authResp;
- void initState() {
- super.initState();
- _wechat = Wechat()
- ..registerApp(
- appId: WECHAT_APPID,
- universalLink: WECHAT_UNIVERSAL_LINK,
- );
- // _auth = _wechat.authResp().listen(_listenAuth);
- _share = _wechat.shareMsgResp().listen(listenShareMsg);
- // _pay = _wechat.payResp().listen(_listenPay);
- // _miniProgram = _wechat.launchMiniProgramResp().listen(_listenMiniProgram);
- }
- listenShareMsg(WechatSdkResp resp){
- }
- // wechat 登录
- void wechatLogin(WeChatLogin weChatLogin) async {
- if (await _wechat.isInstalled() && await _wechat.isSupportApi()) {
- _wechat.auth(
- scope: <String>[WechatScope.SNSAPI_USERINFO],
- state: 'auth',
- );
- print(
- "wechatLoginwechatLoginwechatLoginwechatLoginwechatLoginwechatLoginwechatLoginwechatLogin");
- if (_auth == null) {
- _auth = _wechat.authResp().listen((WechatAuthResp resp) {
- _authResp = resp;
- String content = 'auth: ${resp.errorCode} ${resp.errorMsg}';
- if (_authResp != null &&
- _authResp.errorCode == WechatSdkResp.ERRORCODE_SUCCESS) {
- weChatLogin.call(_authResp.code);
- } else {
- weChatLogin.call(null);
- }
- });
- }
- } else {
- weChatLogin.call(null);
- }
- }
- void wechatSharePage() {
- _wechat.shareWebpage(
- scene: WechatScene.TIMELINE,
- webpageUrl: 'https://www.baidu.com',
- );
- }
- // void wechatShareImage() async {
- // Dio dio = new Dio();
- // Directory documentsDir = await getApplicationDocumentsDirectory();
- // String documentsPath = documentsDir.path;
- // String path = "$documentsPath/demo/game.jpg";
- // await dio.download("https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=229276664,935794386&fm=26&gp=0.jpg", "$path",
- // options: Options(headers: {HttpHeaders.acceptEncodingHeader: "*"}), // disable gzip
- // onReceiveProgress: (received, total) {
- // if (total != -1) {}
- // });
- // print(path);
- // await _wechat.shareImage(scene: WechatScene.SESSION, imageData: File(path).readAsBytesSync());
- // }
- Future<void> wechatShareImage(String path, String type) async {
- if (type == "chat") {
- // 这是 聊天
- return _wechat.shareImage(
- scene: WechatScene.SESSION, imageData: File(path).readAsBytesSync());
- } else if (type == "friend") {
- // 这是朋友圈
- return _wechat.shareImage(
- scene: WechatScene.TIMELINE, imageData: File(path).readAsBytesSync());
- }
- }
- Future<void> wechatShareLink(String url, String type, String username) async {
- if (type == "chat") {
- await _wechat.shareWebpage(
- scene: WechatScene.SESSION,
- webpageUrl: url,
- title: "$username分享了他的运动记录,快来围观吧~",
- description: "$username分享了他的运动记录,快来围观吧~"
- );
- } else if (type == "friend") {
- await _wechat.shareWebpage(
- scene: WechatScene.TIMELINE,
- webpageUrl: url,
- title: "$username分享了他的运动记录,快来围观吧~",
- description: "$username分享了他的运动记录,快来围观吧~"
- );
- }
- return;
- }
- void dispose() {
- _auth?.cancel();
- _auth = null;
- _share?.cancel();
- _share = null;
- _pay?.cancel();
- _pay = null;
- _miniProgram?.cancel();
- _miniProgram = null;
- _wechat = null;
- super.dispose();
- }
- }
|