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

View File

@ -43,8 +43,8 @@ class Tencent {
static const String _SCHEME_FILE = 'file';
static const MethodChannel _channel =
MethodChannel('v7lin.github.io/fake_tencent');
final MethodChannel _channel =
const MethodChannel('v7lin.github.io/fake_tencent');
final StreamController<TencentLoginResp> _loginRespStreamController =
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
description: A powerful tencent plugin for Flutter.
version: 0.2.0+1
version: 0.3.0
author: v7lin <v7lin@qq.com>
homepage: https://github.com/v7lin/fake_tencent