Browse Source

更新淘宝商品购买/分享授权逻辑

tags/0.0.1
Weller 4 years ago
parent
commit
bbf87a4a48
6 changed files with 135 additions and 94 deletions
  1. +1
    -1
      .dart_tool/package_config.json
  2. +36
    -39
      example/android/app/src/main/java/cn/zhios/zhiying_base_widget_example/MainActivity.java
  3. +22
    -18
      lib/pages/goods_details_page/goods_details_page_sk.dart
  4. +32
    -4
      lib/widgets/goods_details/footer/goods_details_footer_widget.dart
  5. +36
    -20
      lib/widgets/home/home_auth/home_auth.dart
  6. +8
    -12
      lib/widgets/hot_ranking/hot_ranking_appbar/hot_ranking_appbar.dart

+ 1
- 1
.dart_tool/package_config.json View File

@@ -620,7 +620,7 @@
"languageVersion": "2.1"
}
],
"generated": "2020-10-14T08:58:23.460236Z",
"generated": "2020-10-14T11:33:32.742369Z",
"generator": "pub",
"generatorVersion": "2.8.2"
}

+ 36
- 39
example/android/app/src/main/java/cn/zhios/zhiying_base_widget_example/MainActivity.java View File

@@ -1,59 +1,56 @@
package cn.zhios.zhiying_base_widget_example;

import cn.zhios.zhiying_comm.ZhiyingCommPlugin;
import cn.zhios.zhiying_comm.ZhiyingFlutterCommHandler;
import cn.zhios.zhiying_comm.ZhiyingFlutterCommNativable;
import cn.zhios.zhiying_comm.ZhiyingFlutterCommNative;
import cn.zhios.zhiying_comm.ZhiyingFlutterCommNativeResult;
import androidx.annotation.NonNull;

import java.util.HashMap;
import java.util.Map;

import androidx.annotation.NonNull;

import cn.zhios.zhiying_comm.ZhiyingFlutterCommHandler;
import cn.zhios.zhiying_comm.ZhiyingFlutterCommNativable;
import cn.zhios.zhiying_comm.ZhiyingFlutterCommNative;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity implements ZhiyingFlutterCommNativable {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
ZhiyingFlutterCommNative.getInstance().regist(this);
}
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
ZhiyingFlutterCommNative.getInstance().regist(this);
}


boolean localDebug = false;
boolean localDebug = false;

@Override
public void openPage(Map params) {
@Override
public void openPage(Map params) {

}
}

@Override
public void openNativePage(Map params) {
@Override
public void openNativePage(Map params) {

}
}

@Override
public Map getSetting() {
Map map = new HashMap();
//map.put("domain", "http://inapi.izhyin.cn"); //"http://120.76.175.204:8989");
map.put("domain", "http://192.168.0.113:5000");
map.put("master_id", "123456");
map.put("secret_key", "123456");
@Override
public Map getSetting() {
Map map = new HashMap();
map.put("domain", "http://inapi.izhyin.cn"); //"http://120.76.175.204:8989");
// map.put("domain", "http://192.168.0.113:5000");
map.put("master_id", "123456");
map.put("secret_key", "123456");
// map.put("token", "123465");
return map;
}
@Override
public void invokeMethod(String method, Map<String, Object> params, ZhiyingFlutterCommHandler handler) {
return;
}
@Override
protected void onDestroy() {
super.onDestroy();
ZhiyingFlutterCommNative.getInstance().unregist();
}
return map;
}
@Override
public void invokeMethod(String method, Map<String, Object> params, ZhiyingFlutterCommHandler handler) {
return;
}
@Override
protected void onDestroy() {
super.onDestroy();
ZhiyingFlutterCommNative.getInstance().unregist();
}
}

+ 22
- 18
lib/pages/goods_details_page/goods_details_page_sk.dart View File

@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:zhiying_base_widget/widgets/goods_details/coupon/counpon_sk.dart';
import 'package:zhiying_base_widget/widgets/goods_details/footer/goods_details_footer_sk.dart';
import 'package:zhiying_base_widget/widgets/goods_details/slide_banner/goods_details_slide_banner_sk.dart';
import 'package:zhiying_base_widget/widgets/goods_details/store/store_sk.dart';
import 'package:zhiying_base_widget/widgets/goods_details/upgrade_tip/upgrade_tip_sk.dart';
import 'package:zhiying_comm/util/shimmer_util.dart';
import 'package:flutter/material.dart';

class GoodsDetailsPageSkeleton extends StatelessWidget {
@override
@@ -13,27 +13,31 @@ class GoodsDetailsPageSkeleton extends StatelessWidget {
backgroundColor: Colors.white,
body: Stack(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
/// 轮播图
GoodsDetailsSlideBannerSkeleton(),
SizedBox(height: 12.5),
SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
/// 轮播图
GoodsDetailsSlideBannerSkeleton(),
SizedBox(height: 12.5),

/// 更新
UpgradeTipSkeleton(),
/// 更新
UpgradeTipSkeleton(),

/// 商店
StoreSkeleton(),
/// 商店
StoreSkeleton(),

/// 优惠卷
CounponSkeleton(),
SizedBox(height: 15),
/// 优惠卷
CounponSkeleton(),
SizedBox(height: 15),

/// 图片
ShimmerUtil.getShimmerWidget(width: double.infinity, height: 40),
ShimmerUtil.getShimmerWidget(width: double.infinity, height: 40),
],
/// 图片
ShimmerUtil.getShimmerWidget(
width: double.infinity, height: 40),
ShimmerUtil.getShimmerWidget(
width: double.infinity, height: 40),
],
),
),
Align(
alignment: Alignment.bottomCenter,


+ 32
- 4
lib/widgets/goods_details/footer/goods_details_footer_widget.dart View File

@@ -66,15 +66,36 @@ class _GooddsDetailsFooterContainerState
void _collectOnClick() {}

/// 分享
void _shareOnClick(GoodsDetailsFooterModel model) {
void _shareOnClick(GoodsDetailsFooterModel model) async {
print(_user?.toString());
if (_user?.token == null || _user.token == '') {
print('need login...');
RouterUtil.goLogin(context);
return;
}
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => GoodsSharePage(widget.model)));

String d = widget.model['data'];
Map<String, dynamic> data = jsonDecode(d);

Map shareArgs = data['share_url_args'] ?? {};
String shopType = shareArgs['type'];

if (data.containsKey('buy_url')) {
String url = data['buy_url'];
if (url == null || url == '') {
Fluttertoast.showToast(msg: '购买链接不存在');
return;
}
if (shopType == 'taobao') {
bool isAuth = await TaobaoAuth.isAuth();
if (!isAuth) {
TaobaoAuth.auth(context);
return;
}
}
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => GoodsSharePage(widget.model)));
}
}

/// 自购省
@@ -99,7 +120,14 @@ class _GooddsDetailsFooterContainerState
return;
}
if (shopType == 'taobao') {
TradeResult result = await FlutterAlibc.openByUrl(url: url,backUrl: "alisdk://");
bool isAuth = await TaobaoAuth.isAuth();
if (!isAuth) {
TaobaoAuth.auth(context);
return;
}

TradeResult result =
await FlutterAlibc.openByUrl(url: url, backUrl: "alisdk://");
Logger.debug('${result.errorCode} ${result.errorMessage} ');
} else {
RouterUtil.openWebview(url, context);


+ 36
- 20
lib/widgets/home/home_auth/home_auth.dart View File

@@ -6,11 +6,10 @@ import 'package:provider/provider.dart';
import 'package:zhiying_base_widget/widgets/home/home_auth/models/home_auth_model.dart';
import 'package:zhiying_comm/zhiying_comm.dart';

class HomeAuth extends StatelessWidget {
class HomeAuth extends StatefulWidget {
final Map<String, dynamic> data;
Map<String, dynamic> _json;
HomeAuthModel _style;
UserInfoModel _user;

HomeAuth(this.data, {Key key}) : super(key: key) {
String d = data['data'];
@@ -18,22 +17,44 @@ class HomeAuth extends StatelessWidget {
_style = HomeAuthModel.fromJson(Map<String, dynamic>.from(_json));
}

@override
_HomeAuthState createState() => _HomeAuthState();
}

class _HomeAuthState extends State<HomeAuth> {
UserInfoModel _user;
bool _isAuth = false;

@override
void initState() {
TaobaoAuth.isAuth().then((isAuth) {
_isAuth = isAuth;
setState(() {});
});

super.initState();
}

@override
Widget build(BuildContext context) {
_user = Provider.of<UserInfoNotifier>(context).userInfo;
if (_isAuth) {
// 授权过,不显示
return Container();
}
return Container(
height: 34,
width: double.infinity,
margin: EdgeInsets.only(left: 12, right: 12, top: 4, bottom: 4),
decoration: BoxDecoration(
color: HexColor.fromHex(_style?.taoaboTipBgColor ?? 'ffffff'),
color: HexColor.fromHex(widget._style?.taoaboTipBgColor ?? 'ffffff'),
borderRadius: BorderRadius.circular(17),
boxShadow: [
BoxShadow(
offset: Offset(2, 1), //x,y轴
color:
HexColor.fromHex(_style?.taoaboTipShadowColor ?? '767676')
.withAlpha(70), //投影颜色
color: HexColor.fromHex(
widget._style?.taoaboTipShadowColor ?? '767676')
.withAlpha(70), //投影颜色
blurRadius: 5 //投影距离
)
]),
@@ -44,18 +65,19 @@ class HomeAuth extends StatelessWidget {
width: 20,
height: 20,
child: CachedNetworkImage(
imageUrl: _style.taobaoAuthIcon,
imageUrl: widget._style.taobaoAuthIcon,
fit: BoxFit.contain,
),
),
Expanded(
child: Text(
_style?.taoaboTipText ?? '',
widget._style?.taoaboTipText ?? '',
maxLines: 1,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold,
color: HexColor.fromHex(_style?.taoaboTipTextColor ?? '333333'),
color: HexColor.fromHex(
widget._style?.taoaboTipTextColor ?? '333333'),
),
),
),
@@ -64,15 +86,15 @@ class HomeAuth extends StatelessWidget {
padding: EdgeInsets.only(left: 12, right: 12, top: 3, bottom: 3),
margin: EdgeInsets.only(left: 8, right: 8),
decoration: BoxDecoration(
color:
HexColor.fromHex(_style?.taoaboTipBtnBgColor ?? 'FF4242'),
color: HexColor.fromHex(
widget._style?.taoaboTipBtnBgColor ?? 'FF4242'),
borderRadius: BorderRadius.circular(20)),
child: Text(
_style?.taoaboTipBtnText ?? '',
widget._style?.taoaboTipBtnText ?? '',
style: TextStyle(
fontSize: 12,
color: HexColor.fromHex(
_style?.taoaboTipBtnTextColor ?? 'ffffff'),
widget._style?.taoaboTipBtnTextColor ?? 'ffffff'),
),
),
),
@@ -82,13 +104,7 @@ class HomeAuth extends StatelessWidget {
RouterUtil.goLogin(context);
return;
}

bool isAuth = await TaobaoAuth.isAuth();
if (!isAuth) {
TaobaoAuth.auth(context);
} else {
Logger.debug('您已经授权过了');
}
TaobaoAuth.auth(context);
},
),
],


+ 8
- 12
lib/widgets/hot_ranking/hot_ranking_appbar/hot_ranking_appbar.dart View File

@@ -1,10 +1,10 @@
import 'dart:convert';

import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:zhiying_base_widget/widgets/hot_ranking/hot_ranking_appbar/model/hot_ranking_appbaar_model.dart';
import 'package:zhiying_comm/util/extension/color.dart';
import 'package:zhiying_comm/zhiying_comm.dart';
import 'package:cached_network_image/cached_network_image.dart';

class HotRankingAppBar extends StatelessWidget {
final Map<String, dynamic> data;
@@ -15,18 +15,15 @@ class HotRankingAppBar extends StatelessWidget {
Widget build(BuildContext context) {
var model = HotRankingAppbarModel.fromJson(json.decode(data['data']));
return Container(
height: MediaQuery
.of(context)
.padding
.top + 56,
height: MediaQuery.of(context).padding.top + 56,
child: AppBar(
elevation: 0,
leading: Navigator.canPop(context)
? IconButton(
icon: Icon(Icons.arrow_back_ios),
onPressed: () {
Navigator.of(context).pop();
})
icon: Icon(Icons.arrow_back_ios),
onPressed: () {
Navigator.of(context).pop();
})
: Container(),
backgroundColor: HexColor.fromHex(
model.appBarBgColor == "" ? "#00000000" : model.appBarBgColor),
@@ -37,9 +34,8 @@ class HotRankingAppBar extends StatelessWidget {
children: <Widget>[
Text(
model.appBarName ?? "",
style:
TextStyle(
color: HexColor.fromHex(model.appBarNameColor ?? "")),
style: TextStyle(
color: HexColor.fromHex(model?.appBarNameColor ?? "")),
),
CachedNetworkImage(
height: 40.w,


Loading…
Cancel
Save