This commit is contained in:
v7lin
2019-05-17 10:44:14 +08:00
parent 555e9aa3dd
commit c92aa6136d
5 changed files with 18 additions and 50 deletions

View File

@ -25,25 +25,13 @@ void main() {
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Tencent tencent = Tencent(); return MaterialApp(
tencent.registerApp(appId: '222222'); home: Home(),
return TencentProvider(
tencent: tencent,
child: MaterialApp(
home: Home(tencent: tencent),
),
); );
} }
} }
class Home extends StatefulWidget { class Home extends StatefulWidget {
Home({
Key key,
@required this.tencent,
}) : super(key: key);
final Tencent tencent;
@override @override
State<StatefulWidget> createState() { State<StatefulWidget> createState() {
return _HomeState(); return _HomeState();
@ -51,6 +39,8 @@ class Home extends StatefulWidget {
} }
class _HomeState extends State<Home> { class _HomeState extends State<Home> {
Tencent _tencent;
StreamSubscription<TencentLoginResp> _login; StreamSubscription<TencentLoginResp> _login;
StreamSubscription<TencentUserInfoResp> _userInfo; StreamSubscription<TencentUserInfoResp> _userInfo;
StreamSubscription<TencentShareResp> _share; StreamSubscription<TencentShareResp> _share;
@ -60,9 +50,11 @@ class _HomeState extends State<Home> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_login = widget.tencent.loginResp().listen(_listenLogin); _tencent = Tencent();
_userInfo = widget.tencent.userInfoResp().listen(_listenUserInfo); _tencent.registerApp(appId: '222222');
_share = widget.tencent.shareResp().listen(_listenShare); _login = _tencent.loginResp().listen(_listenLogin);
_userInfo = _tencent.userInfoResp().listen(_listenUserInfo);
_share = _tencent.shareResp().listen(_listenShare);
} }
void _listenLogin(TencentLoginResp resp) { void _listenLogin(TencentLoginResp resp) {
@ -107,14 +99,14 @@ class _HomeState extends State<Home> {
title: const Text('环境检查'), title: const Text('环境检查'),
onTap: () async { onTap: () async {
String content = String content =
'tencent: ${await widget.tencent.isQQInstalled()} - ${await widget.tencent.isQQSupportSSOLogin()}'; 'tencent: ${await _tencent.isQQInstalled()} - ${await _tencent.isQQSupportSSOLogin()}';
_showTips('环境检查', content); _showTips('环境检查', content);
}, },
), ),
ListTile( ListTile(
title: const Text('登录'), title: const Text('登录'),
onTap: () { onTap: () {
widget.tencent.login( _tencent.login(
scope: [TencentScope.GET_SIMPLE_USERINFO], scope: [TencentScope.GET_SIMPLE_USERINFO],
); );
}, },
@ -127,7 +119,7 @@ class _HomeState extends State<Home> {
if (DateTime.now().millisecondsSinceEpoch - if (DateTime.now().millisecondsSinceEpoch -
_loginResp.createAt < _loginResp.createAt <
_loginResp.expiresIn * 1000) { _loginResp.expiresIn * 1000) {
widget.tencent.getUserInfo( _tencent.getUserInfo(
openId: _loginResp.openid, openId: _loginResp.openid,
accessToken: _loginResp.accessToken, accessToken: _loginResp.accessToken,
expiresIn: _loginResp.expiresIn, expiresIn: _loginResp.expiresIn,
@ -140,7 +132,7 @@ class _HomeState extends State<Home> {
ListTile( ListTile(
title: const Text('分享文字'), title: const Text('分享文字'),
onTap: () { onTap: () {
widget.tencent.shareMood( _tencent.shareMood(
scene: TencentScene.SCENE_QZONE, scene: TencentScene.SCENE_QZONE,
summary: '分享测试', summary: '分享测试',
); );
@ -160,7 +152,7 @@ class _HomeState extends State<Home> {
saveFile.writeAsBytesSync(imageData.buffer.asUint8List(), saveFile.writeAsBytesSync(imageData.buffer.asUint8List(),
flush: true); flush: true);
} }
await widget.tencent.shareImage( await _tencent.shareImage(
scene: TencentScene.SCENE_QQ, scene: TencentScene.SCENE_QQ,
imageUri: Uri.file(saveFile.path), imageUri: Uri.file(saveFile.path),
); );
@ -169,7 +161,7 @@ class _HomeState extends State<Home> {
ListTile( ListTile(
title: const Text('分享链接'), title: const Text('分享链接'),
onTap: () { onTap: () {
widget.tencent.shareWebpage( _tencent.shareWebpage(
scene: TencentScene.SCENE_QQ, scene: TencentScene.SCENE_QQ,
title: 'title', title: 'title',
targetUrl: 'https://www.baidu.com/', targetUrl: 'https://www.baidu.com/',

View File

@ -6,7 +6,6 @@ export 'src/domain/tencent_share_resp.dart' hide TencentShareRespSerializer;
export 'src/domain/tencent_user_info_resp.dart' export 'src/domain/tencent_user_info_resp.dart'
hide TencentUserInfoRespSerializer; hide TencentUserInfoRespSerializer;
export 'src/tencent.dart'; export 'src/tencent.dart';
export 'src/tencent_provider.dart';
export 'src/tencent_qzone_flag.dart'; export 'src/tencent_qzone_flag.dart';
export 'src/tencent_scene.dart'; export 'src/tencent_scene.dart';
export 'src/tencent_scope.dart'; export 'src/tencent_scope.dart';

View File

@ -43,8 +43,8 @@ class Tencent {
static const String _SCHEME_FILE = 'file'; static const String _SCHEME_FILE = 'file';
static const MethodChannel _channel = final MethodChannel _channel =
MethodChannel('v7lin.github.io/fake_tencent'); const MethodChannel('v7lin.github.io/fake_tencent');
final StreamController<TencentLoginResp> _loginRespStreamController = final StreamController<TencentLoginResp> _loginRespStreamController =
StreamController<TencentLoginResp>.broadcast(); StreamController<TencentLoginResp>.broadcast();

View File

@ -1,23 +0,0 @@
import 'package:fake_tencent/src/tencent.dart';
import 'package:flutter/widgets.dart';
class TencentProvider extends InheritedWidget {
TencentProvider({
Key key,
@required this.tencent,
@required Widget child,
}) : super(key: key, child: child);
final Tencent tencent;
@override
bool updateShouldNotify(InheritedWidget oldWidget) {
TencentProvider oldProvider = oldWidget as TencentProvider;
return tencent != oldProvider.tencent;
}
static TencentProvider of(BuildContext context) {
return context.inheritFromWidgetOfExactType(TencentProvider)
as TencentProvider;
}
}

View File

@ -1,6 +1,6 @@
name: fake_tencent name: fake_tencent
description: A powerful tencent plugin for Flutter. description: A powerful tencent plugin for Flutter.
version: 0.2.0+1 version: 0.3.0
author: v7lin <v7lin@qq.com> author: v7lin <v7lin@qq.com>
homepage: https://github.com/v7lin/fake_tencent homepage: https://github.com/v7lin/fake_tencent