From bbf87a4a4888543b0fd455e4530a0dae33574300 Mon Sep 17 00:00:00 2001 From: Weller <1812208341@qq.com> Date: Thu, 15 Oct 2020 12:00:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B7=98=E5=AE=9D=E5=95=86?= =?UTF-8?q?=E5=93=81=E8=B4=AD=E4=B9=B0/=E5=88=86=E4=BA=AB=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 2 +- .../MainActivity.java | 75 +++++++++---------- .../goods_details_page_sk.dart | 40 +++++----- .../footer/goods_details_footer_widget.dart | 36 ++++++++- lib/widgets/home/home_auth/home_auth.dart | 56 +++++++++----- .../hot_ranking_appbar.dart | 20 ++--- 6 files changed, 135 insertions(+), 94 deletions(-) diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index f980bb6..05e4098 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -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" } diff --git a/example/android/app/src/main/java/cn/zhios/zhiying_base_widget_example/MainActivity.java b/example/android/app/src/main/java/cn/zhios/zhiying_base_widget_example/MainActivity.java index e2bb010..cb83275 100644 --- a/example/android/app/src/main/java/cn/zhios/zhiying_base_widget_example/MainActivity.java +++ b/example/android/app/src/main/java/cn/zhios/zhiying_base_widget_example/MainActivity.java @@ -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 params, ZhiyingFlutterCommHandler handler) { - return; - } - - @Override - protected void onDestroy() { - super.onDestroy(); - ZhiyingFlutterCommNative.getInstance().unregist(); - } + return map; + } + + @Override + public void invokeMethod(String method, Map params, ZhiyingFlutterCommHandler handler) { + return; + } + + @Override + protected void onDestroy() { + super.onDestroy(); + ZhiyingFlutterCommNative.getInstance().unregist(); + } } diff --git a/lib/pages/goods_details_page/goods_details_page_sk.dart b/lib/pages/goods_details_page/goods_details_page_sk.dart index f8dcdc4..91f8234 100644 --- a/lib/pages/goods_details_page/goods_details_page_sk.dart +++ b/lib/pages/goods_details_page/goods_details_page_sk.dart @@ -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: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - /// 轮播图 - GoodsDetailsSlideBannerSkeleton(), - SizedBox(height: 12.5), + SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + /// 轮播图 + 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, diff --git a/lib/widgets/goods_details/footer/goods_details_footer_widget.dart b/lib/widgets/goods_details/footer/goods_details_footer_widget.dart index 0a06453..28d3163 100644 --- a/lib/widgets/goods_details/footer/goods_details_footer_widget.dart +++ b/lib/widgets/goods_details/footer/goods_details_footer_widget.dart @@ -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 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); diff --git a/lib/widgets/home/home_auth/home_auth.dart b/lib/widgets/home/home_auth/home_auth.dart index 3cd3791..63ad186 100644 --- a/lib/widgets/home/home_auth/home_auth.dart +++ b/lib/widgets/home/home_auth/home_auth.dart @@ -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 data; Map _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.from(_json)); } + @override + _HomeAuthState createState() => _HomeAuthState(); +} + +class _HomeAuthState extends State { + 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(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); }, ), ], diff --git a/lib/widgets/hot_ranking/hot_ranking_appbar/hot_ranking_appbar.dart b/lib/widgets/hot_ranking/hot_ranking_appbar/hot_ranking_appbar.dart index 56c463b..ab0ecfe 100644 --- a/lib/widgets/hot_ranking/hot_ranking_appbar/hot_ranking_appbar.dart +++ b/lib/widgets/hot_ranking/hot_ranking_appbar/hot_ranking_appbar.dart @@ -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 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: [ Text( model.appBarName ?? "", - style: - TextStyle( - color: HexColor.fromHex(model.appBarNameColor ?? "")), + style: TextStyle( + color: HexColor.fromHex(model?.appBarNameColor ?? "")), ), CachedNetworkImage( height: 40.w,