@@ -620,7 +620,7 @@ | |||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
} | } | ||||
], | ], | ||||
"generated": "2020-10-14T08:58:23.460236Z", | |||||
"generated": "2020-10-14T11:33:32.742369Z", | |||||
"generator": "pub", | "generator": "pub", | ||||
"generatorVersion": "2.8.2" | "generatorVersion": "2.8.2" | ||||
} | } |
@@ -1,59 +1,56 @@ | |||||
package cn.zhios.zhiying_base_widget_example; | 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.HashMap; | ||||
import java.util.Map; | 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.android.FlutterActivity; | ||||
import io.flutter.embedding.engine.FlutterEngine; | import io.flutter.embedding.engine.FlutterEngine; | ||||
import io.flutter.plugins.GeneratedPluginRegistrant; | import io.flutter.plugins.GeneratedPluginRegistrant; | ||||
public class MainActivity extends FlutterActivity implements ZhiyingFlutterCommNativable { | 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"); | // 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(); | |||||
} | |||||
} | } |
@@ -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/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/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/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/store/store_sk.dart'; | ||||
import 'package:zhiying_base_widget/widgets/goods_details/upgrade_tip/upgrade_tip_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:zhiying_comm/util/shimmer_util.dart'; | ||||
import 'package:flutter/material.dart'; | |||||
class GoodsDetailsPageSkeleton extends StatelessWidget { | class GoodsDetailsPageSkeleton extends StatelessWidget { | ||||
@override | @override | ||||
@@ -13,27 +13,31 @@ class GoodsDetailsPageSkeleton extends StatelessWidget { | |||||
backgroundColor: Colors.white, | backgroundColor: Colors.white, | ||||
body: Stack( | body: Stack( | ||||
children: <Widget>[ | 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( | Align( | ||||
alignment: Alignment.bottomCenter, | alignment: Alignment.bottomCenter, | ||||
@@ -66,15 +66,36 @@ class _GooddsDetailsFooterContainerState | |||||
void _collectOnClick() {} | void _collectOnClick() {} | ||||
/// 分享 | /// 分享 | ||||
void _shareOnClick(GoodsDetailsFooterModel model) { | |||||
void _shareOnClick(GoodsDetailsFooterModel model) async { | |||||
print(_user?.toString()); | print(_user?.toString()); | ||||
if (_user?.token == null || _user.token == '') { | if (_user?.token == null || _user.token == '') { | ||||
print('need login...'); | print('need login...'); | ||||
RouterUtil.goLogin(context); | RouterUtil.goLogin(context); | ||||
return; | 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; | return; | ||||
} | } | ||||
if (shopType == 'taobao') { | 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} '); | Logger.debug('${result.errorCode} ${result.errorMessage} '); | ||||
} else { | } else { | ||||
RouterUtil.openWebview(url, context); | RouterUtil.openWebview(url, context); | ||||
@@ -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_base_widget/widgets/home/home_auth/models/home_auth_model.dart'; | ||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
class HomeAuth extends StatelessWidget { | |||||
class HomeAuth extends StatefulWidget { | |||||
final Map<String, dynamic> data; | final Map<String, dynamic> data; | ||||
Map<String, dynamic> _json; | Map<String, dynamic> _json; | ||||
HomeAuthModel _style; | HomeAuthModel _style; | ||||
UserInfoModel _user; | |||||
HomeAuth(this.data, {Key key}) : super(key: key) { | HomeAuth(this.data, {Key key}) : super(key: key) { | ||||
String d = data['data']; | String d = data['data']; | ||||
@@ -18,22 +17,44 @@ class HomeAuth extends StatelessWidget { | |||||
_style = HomeAuthModel.fromJson(Map<String, dynamic>.from(_json)); | _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 | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
_user = Provider.of<UserInfoNotifier>(context).userInfo; | _user = Provider.of<UserInfoNotifier>(context).userInfo; | ||||
if (_isAuth) { | |||||
// 授权过,不显示 | |||||
return Container(); | |||||
} | |||||
return Container( | return Container( | ||||
height: 34, | height: 34, | ||||
width: double.infinity, | width: double.infinity, | ||||
margin: EdgeInsets.only(left: 12, right: 12, top: 4, bottom: 4), | margin: EdgeInsets.only(left: 12, right: 12, top: 4, bottom: 4), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex(_style?.taoaboTipBgColor ?? 'ffffff'), | |||||
color: HexColor.fromHex(widget._style?.taoaboTipBgColor ?? 'ffffff'), | |||||
borderRadius: BorderRadius.circular(17), | borderRadius: BorderRadius.circular(17), | ||||
boxShadow: [ | boxShadow: [ | ||||
BoxShadow( | BoxShadow( | ||||
offset: Offset(2, 1), //x,y轴 | 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 //投影距离 | blurRadius: 5 //投影距离 | ||||
) | ) | ||||
]), | ]), | ||||
@@ -44,18 +65,19 @@ class HomeAuth extends StatelessWidget { | |||||
width: 20, | width: 20, | ||||
height: 20, | height: 20, | ||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: _style.taobaoAuthIcon, | |||||
imageUrl: widget._style.taobaoAuthIcon, | |||||
fit: BoxFit.contain, | fit: BoxFit.contain, | ||||
), | ), | ||||
), | ), | ||||
Expanded( | Expanded( | ||||
child: Text( | child: Text( | ||||
_style?.taoaboTipText ?? '', | |||||
widget._style?.taoaboTipText ?? '', | |||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 12, | fontSize: 12, | ||||
fontWeight: FontWeight.bold, | 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), | padding: EdgeInsets.only(left: 12, right: 12, top: 3, bottom: 3), | ||||
margin: EdgeInsets.only(left: 8, right: 8), | margin: EdgeInsets.only(left: 8, right: 8), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: | |||||
HexColor.fromHex(_style?.taoaboTipBtnBgColor ?? 'FF4242'), | |||||
color: HexColor.fromHex( | |||||
widget._style?.taoaboTipBtnBgColor ?? 'FF4242'), | |||||
borderRadius: BorderRadius.circular(20)), | borderRadius: BorderRadius.circular(20)), | ||||
child: Text( | child: Text( | ||||
_style?.taoaboTipBtnText ?? '', | |||||
widget._style?.taoaboTipBtnText ?? '', | |||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 12, | fontSize: 12, | ||||
color: HexColor.fromHex( | color: HexColor.fromHex( | ||||
_style?.taoaboTipBtnTextColor ?? 'ffffff'), | |||||
widget._style?.taoaboTipBtnTextColor ?? 'ffffff'), | |||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
@@ -82,13 +104,7 @@ class HomeAuth extends StatelessWidget { | |||||
RouterUtil.goLogin(context); | RouterUtil.goLogin(context); | ||||
return; | return; | ||||
} | } | ||||
bool isAuth = await TaobaoAuth.isAuth(); | |||||
if (!isAuth) { | |||||
TaobaoAuth.auth(context); | |||||
} else { | |||||
Logger.debug('您已经授权过了'); | |||||
} | |||||
TaobaoAuth.auth(context); | |||||
}, | }, | ||||
), | ), | ||||
], | ], | ||||
@@ -1,10 +1,10 @@ | |||||
import 'dart:convert'; | import 'dart:convert'; | ||||
import 'package:cached_network_image/cached_network_image.dart'; | |||||
import 'package:flutter/material.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_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/util/extension/color.dart'; | ||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
import 'package:cached_network_image/cached_network_image.dart'; | |||||
class HotRankingAppBar extends StatelessWidget { | class HotRankingAppBar extends StatelessWidget { | ||||
final Map<String, dynamic> data; | final Map<String, dynamic> data; | ||||
@@ -15,18 +15,15 @@ class HotRankingAppBar extends StatelessWidget { | |||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
var model = HotRankingAppbarModel.fromJson(json.decode(data['data'])); | var model = HotRankingAppbarModel.fromJson(json.decode(data['data'])); | ||||
return Container( | return Container( | ||||
height: MediaQuery | |||||
.of(context) | |||||
.padding | |||||
.top + 56, | |||||
height: MediaQuery.of(context).padding.top + 56, | |||||
child: AppBar( | child: AppBar( | ||||
elevation: 0, | elevation: 0, | ||||
leading: Navigator.canPop(context) | leading: Navigator.canPop(context) | ||||
? IconButton( | ? IconButton( | ||||
icon: Icon(Icons.arrow_back_ios), | |||||
onPressed: () { | |||||
Navigator.of(context).pop(); | |||||
}) | |||||
icon: Icon(Icons.arrow_back_ios), | |||||
onPressed: () { | |||||
Navigator.of(context).pop(); | |||||
}) | |||||
: Container(), | : Container(), | ||||
backgroundColor: HexColor.fromHex( | backgroundColor: HexColor.fromHex( | ||||
model.appBarBgColor == "" ? "#00000000" : model.appBarBgColor), | model.appBarBgColor == "" ? "#00000000" : model.appBarBgColor), | ||||
@@ -37,9 +34,8 @@ class HotRankingAppBar extends StatelessWidget { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
Text( | Text( | ||||
model.appBarName ?? "", | model.appBarName ?? "", | ||||
style: | |||||
TextStyle( | |||||
color: HexColor.fromHex(model.appBarNameColor ?? "")), | |||||
style: TextStyle( | |||||
color: HexColor.fromHex(model?.appBarNameColor ?? "")), | |||||
), | ), | ||||
CachedNetworkImage( | CachedNetworkImage( | ||||
height: 40.w, | height: 40.w, | ||||