import 'dart:async'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:image/image.dart' as imglib; // import 'package:path/path.dart' as path; // import 'package:path_provider/path_provider.dart' as path_provider; import 'package:weibo_kit/weibo_kit.dart'; import 'package:weibo_kit_example/api/model/weibo_api_resp.dart'; import 'package:weibo_kit_example/api/weibo_api.dart'; const String _WEIBO_APP_KEY = 'your weibo app key'; const String _WEIBO_UNIVERSAL_LINK = 'your weibo universal link'; const List _WEIBO_SCOPE = [ WeiboScope.ALL, ]; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { const MyApp({ super.key, }); @override Widget build(BuildContext context) { return MaterialApp( home: Home(), ); } } class Home extends StatefulWidget { const Home({ super.key, }); @override State createState() { return _HomeState(); } } class _HomeState extends State { late final StreamSubscription _respSubs; AuthResp? _authResp; @override void initState() { super.initState(); _respSubs = Weibo.instance.respStream().listen(_listenResp); } void _listenResp(BaseResp resp) { if (resp is AuthResp) { _authResp = resp; final String content = 'auth: ${resp.errorCode}'; _showTips('登录', content); } else if (resp is ShareMsgResp) { final String content = 'share: ${resp.errorCode}'; _showTips('分享', content); } } @override void dispose() { _respSubs.cancel(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Weibo Kit Demo'), ), body: ListView( children: [ ListTile( title: Text('注册APP'), onTap: () async { await Weibo.instance.registerApp( appKey: _WEIBO_APP_KEY, universalLink: _WEIBO_UNIVERSAL_LINK, scope: _WEIBO_SCOPE, ); _showTips('注册APP', '注册成功'); }, ), ListTile( title: Text('环境检查'), onTap: () async { final String content = 'weibo: ${await Weibo.instance.isInstalled()}'; _showTips('环境检查', content); }, ), ListTile( title: Text('登录'), onTap: () { Weibo.instance.auth( appKey: _WEIBO_APP_KEY, scope: _WEIBO_SCOPE, ); }, ), ListTile( title: Text('用户信息'), onTap: () async { if (_authResp?.isSuccessful ?? false) { final WeiboUserInfoResp userInfoResp = await WeiboApi.getUserInfo( appkey: _WEIBO_APP_KEY, userId: _authResp!.userId!, accessToken: _authResp!.accessToken!, ); if (userInfoResp.isSuccessful) { _showTips('用户信息', '${userInfoResp.screenName}\n${userInfoResp.description}\n${userInfoResp.location}\n${userInfoResp.profileImageUrl}'); } else { _showTips('用户信息', '获取用户信息失败\n${userInfoResp.errorCode}:${userInfoResp.error}'); } } }, ), ListTile( title: Text('文字分享'), onTap: () { Weibo.instance.shareText( text: 'Share Text', ); }, ), ListTile( title: Text('图片分享'), onTap: () async { final File file = await DefaultCacheManager().getSingleFile( 'https://www.baidu.com/img/bd_logo1.png?where=super'); // if (Platform.isAndroid) { // // 仅支持 Context.getExternalFilesDir(null)/Context.getExternalCacheDirs(null) 路径分享 // // path_provider.getExternalCacheDirectories(); // // path_provider.getExternalStorageDirectory(); // final Directory temporaryDir = // await path_provider.getTemporaryDirectory(); // if (path.isWithin(temporaryDir.parent.path, file.path)) { // // 复制 // final File copyFile = File(path.join( // (await path_provider.getExternalStorageDirectory())!.path, // path.basename(file.path))); // if (copyFile.existsSync()) { // await copyFile.delete(); // } // await copyFile.writeAsBytes(await file.readAsBytes()); // file = copyFile; // } // } await Weibo.instance.shareMultiImage( text: 'Share Text', imageUris: [Uri.file(file.path)], ); }, ), ListTile( title: Text('网页分享'), onTap: () async { final File file = await DefaultCacheManager().getSingleFile( 'https://www.baidu.com/img/bd_logo1.png?where=super'); final imglib.Image thumbnail = imglib.decodeImage(file.readAsBytesSync())!; Uint8List thumbData = thumbnail.getBytes(); if (thumbData.length > 32 * 1024) { thumbData = Uint8List.fromList(imglib.encodeJpg(thumbnail, quality: 100 * 32 * 1024 ~/ thumbData.length)); } await Weibo.instance.shareWebpage( title: 'title', description: 'share webpage', thumbData: thumbData.buffer.asUint8List(), webpageUrl: 'https://www.baidu.com', ); }, ), ], ), ); } void _showTips(String title, String content) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text(title), content: Text(content), ); }, ); } }