@@ -112,9 +112,9 @@ android { | |||||
// 智夜生活 | // 智夜生活 | ||||
zhiying { | zhiying { | ||||
applicationId "cn.zhios.zhiying" | applicationId "cn.zhios.zhiying" | ||||
versionCode 35 | |||||
versionCode 37 | |||||
dimension "app" | dimension "app" | ||||
versionName '1.2.35' | |||||
versionName '1.2.37' | |||||
// 签名信息 | // 签名信息 | ||||
signingConfig signingConfigs.zhiying | signingConfig signingConfigs.zhiying | ||||
} | } | ||||
@@ -227,6 +227,8 @@ MobSDK { | |||||
enable true | enable true | ||||
} | } | ||||
QZone { | QZone { | ||||
appId "1111030588" | |||||
appKey "XoHKlrBybXy7ORBt" | |||||
enable true | enable true | ||||
} | } | ||||
SinaWeibo { | SinaWeibo { | ||||
@@ -18,12 +18,15 @@ class ActivityDialog extends StatelessWidget { | |||||
try { | try { | ||||
Map result = await NetUtil.post('/api/v1/mod/pub.flutter.current_activity_dialog', method: NetMethod.GET); | Map result = await NetUtil.post('/api/v1/mod/pub.flutter.current_activity_dialog', method: NetMethod.GET); | ||||
if (!EmptyUtil.isEmpty(result)) { | if (!EmptyUtil.isEmpty(result)) { | ||||
var modListData = result['data']['mod_list'][0]['data']; | |||||
if (!EmptyUtil.isEmpty(modListData)) { | |||||
Map<String, dynamic> da = Map<String, dynamic>.from(jsonDecode(modListData)); | |||||
ActivityDialogModel model = ActivityDialogModel.fromJson(Map<String, dynamic>.from(da)); | |||||
if(!EmptyUtil.isEmpty(model) && model.isOpen == '1' ) { | |||||
return await showCupertinoDialog(context: context, builder: (_) => ActivityDialog(model)); | |||||
var dialogList=result['data']['mod_list']; | |||||
for(var item in dialogList){ | |||||
var modListData = item['data']; | |||||
if (!EmptyUtil.isEmpty(modListData)) { | |||||
Map<String, dynamic> da = Map<String, dynamic>.from(jsonDecode(modListData)); | |||||
ActivityDialogModel model = ActivityDialogModel.fromJson(Map<String, dynamic>.from(da)); | |||||
if(!EmptyUtil.isEmpty(model) && model.isOpen == '1' ) { | |||||
return await showCupertinoDialog(context: context, builder: (_) => ActivityDialog(model)); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -36,7 +39,9 @@ class ActivityDialog extends StatelessWidget { | |||||
void _jumpTo(BuildContext context){ | void _jumpTo(BuildContext context){ | ||||
Navigator.maybePop(context); | Navigator.maybePop(context); | ||||
if(!EmptyUtil.isEmpty(model)){ | if(!EmptyUtil.isEmpty(model)){ | ||||
RouterUtil.route(model, model.toJson(), context); | |||||
RouterUtil.route(model, model.toJson(), context); | |||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,90 @@ | |||||
import 'dart:convert'; | |||||
import 'package:flutter/cupertino.dart'; | |||||
import 'package:flutter/material.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
import '../activity_dialog/activity_dialog_model.dart'; | |||||
import 'advertising_model.dart'; | |||||
/// | |||||
/// 广告弹窗接口 | |||||
/// | |||||
class AdvertisingDialog extends StatelessWidget { | |||||
final AdvertisingDialogModel model; | |||||
const AdvertisingDialog(this.model, {Key key}) : super(key: key); | |||||
static Future show(BuildContext context) async { | |||||
try { | |||||
Map result = await NetUtil.post('/api/v1/app/push_dialog', method: NetMethod.GET); | |||||
if (!EmptyUtil.isEmpty(result)) { | |||||
var dialogList = result['data']; | |||||
for (var item in dialogList) { | |||||
if (!EmptyUtil.isEmpty(item)) { | |||||
AdvertisingDialogModel model = AdvertisingDialogModel.fromJson(item); | |||||
if (!EmptyUtil.isEmpty(model)) { | |||||
await Future.delayed(Duration(milliseconds: model?.interval*1000)); | |||||
await showCupertinoDialog(context: context, builder: (_) => AdvertisingDialog(model)); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} catch (e, s) { | |||||
Logger.error(e, s); | |||||
} | |||||
} | |||||
/// 跳转 | |||||
void _jumpTo(BuildContext context) { | |||||
Navigator.maybePop(context); | |||||
RouterUtil.route(SkipModel.fromJson(json.decode(model?.skip)), json.decode(model?.skip), context); | |||||
} | |||||
@override | |||||
Widget build(BuildContext context) { | |||||
return Scaffold( | |||||
backgroundColor: Colors.transparent, | |||||
body: Container( | |||||
width: double.infinity, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
mainAxisAlignment: MainAxisAlignment.center, | |||||
children: <Widget>[ | |||||
/// 图片 | |||||
GestureDetector( | |||||
onTap: () => _jumpTo(context), | |||||
behavior: HitTestBehavior.opaque, | |||||
child: Container( | |||||
// margin: const EdgeInsets.symmetric(horizontal: 40), | |||||
width: MediaQuery.of(context).size.width * 0.7, | |||||
child: CachedNetworkImage( | |||||
fadeInDuration: Duration(milliseconds: 0), | |||||
imageUrl: model?.image ?? '', | |||||
fit: BoxFit.fitWidth, | |||||
), | |||||
), | |||||
), | |||||
/// 关闭按钮 | |||||
GestureDetector( | |||||
child: Container( | |||||
width: 30, | |||||
height: 30, | |||||
margin: EdgeInsets.only(top: 10), | |||||
child: Icon( | |||||
Icons.cancel, | |||||
color: Colors.white, | |||||
size: 32, | |||||
)), | |||||
onTap: () { | |||||
Navigator.pop(context); | |||||
}, | |||||
) | |||||
], | |||||
), | |||||
), | |||||
); | |||||
} | |||||
} |
@@ -0,0 +1,68 @@ | |||||
class AdvertisingDialogModel { | |||||
int id; | |||||
int uid; | |||||
String name; | |||||
String conditionType; | |||||
String condition; | |||||
String position; | |||||
String image; | |||||
int interval; | |||||
String skip; | |||||
int type; | |||||
String popupTime; | |||||
int state; | |||||
String createAt; | |||||
String updateAt; | |||||
AdvertisingDialogModel( | |||||
{this.id, | |||||
this.uid, | |||||
this.name, | |||||
this.conditionType, | |||||
this.condition, | |||||
this.position, | |||||
this.image, | |||||
this.interval, | |||||
this.skip, | |||||
this.type, | |||||
this.popupTime, | |||||
this.state, | |||||
this.createAt, | |||||
this.updateAt}); | |||||
AdvertisingDialogModel.fromJson(Map<String, dynamic> json) { | |||||
id = json['id']; | |||||
uid = json['uid']; | |||||
name = json['name']; | |||||
conditionType = json['condition_type']; | |||||
condition = json['condition']; | |||||
position = json['position']; | |||||
image = json['image']; | |||||
interval = json['interval']; | |||||
skip = json['skip']; | |||||
type = json['type']; | |||||
popupTime = json['popup_time']; | |||||
state = json['state']; | |||||
createAt = json['create_at']; | |||||
updateAt = json['update_at']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['id'] = this.id; | |||||
data['uid'] = this.uid; | |||||
data['name'] = this.name; | |||||
data['condition_type'] = this.conditionType; | |||||
data['condition'] = this.condition; | |||||
data['position'] = this.position; | |||||
data['image'] = this.image; | |||||
data['interval'] = this.interval; | |||||
data['skip'] = this.skip; | |||||
data['type'] = this.type; | |||||
data['popup_time'] = this.popupTime; | |||||
data['state'] = this.state; | |||||
data['create_at'] = this.createAt; | |||||
data['update_at'] = this.updateAt; | |||||
return data; | |||||
} | |||||
} |
@@ -54,7 +54,7 @@ class AppConfigModel { | |||||
keys = json['keys'] != null ? new AppConfigKeyModel.fromJson(json['keys']) : null; | keys = json['keys'] != null ? new AppConfigKeyModel.fromJson(json['keys']) : null; | ||||
guideImage = json['guide_image'] != null ? new AppConfigGuideModel.fromJson(json['guide_image']) : null; | guideImage = json['guide_image'] != null ? new AppConfigGuideModel.fromJson(json['guide_image']) : null; | ||||
guideData = json['guide_data'] != null ? GuideData.fromJson(json['guide_data']) : null; | guideData = json['guide_data'] != null ? GuideData.fromJson(json['guide_data']) : null; | ||||
appStartDelay=json['app_start_delay']; | |||||
appStartDelay=json['app_start_delay']!=null?json['app_start_delay']:'0.5'; | |||||
} | } | ||||
Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
@@ -315,7 +315,7 @@ class _FloatViewState extends State<FloatView> with TickerProviderStateMixin { | |||||
setState(() {}); | setState(() {}); | ||||
}); | }); | ||||
// animationController.repeat(reverse: true); | |||||
animationController.repeat(reverse: true); | |||||
super.initState(); | super.initState(); | ||||
} | } | ||||
@@ -328,7 +328,7 @@ class _FloatViewState extends State<FloatView> with TickerProviderStateMixin { | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return Container(); | |||||
// return Container(); | |||||
return Row( | return Row( | ||||
mainAxisAlignment: MainAxisAlignment.end, | mainAxisAlignment: MainAxisAlignment.end, | ||||
children: <Widget>[ | children: <Widget>[ | ||||
@@ -16,6 +16,7 @@ import 'package:mobpush_plugin/mobpush_notify_message.dart'; | |||||
import 'package:mobpush_plugin/mobpush_plugin.dart'; | import 'package:mobpush_plugin/mobpush_plugin.dart'; | ||||
import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||
import 'package:zhiying_base_widget/dialog/global_dialog/activity_dialog/activity_dialog.dart'; | import 'package:zhiying_base_widget/dialog/global_dialog/activity_dialog/activity_dialog.dart'; | ||||
import 'package:zhiying_base_widget/dialog/global_dialog/advertising_dialog/advertising_dialog.dart'; | |||||
import 'package:zhiying_base_widget/dialog/global_dialog/intellect_search_goods_dialog/intellect_create.dart'; | import 'package:zhiying_base_widget/dialog/global_dialog/intellect_search_goods_dialog/intellect_create.dart'; | ||||
import 'package:zhiying_base_widget/dialog/global_dialog/notification_setting_dialog/notification_setting_dialog.dart'; | import 'package:zhiying_base_widget/dialog/global_dialog/notification_setting_dialog/notification_setting_dialog.dart'; | ||||
import 'package:zhiying_base_widget/dialog/global_dialog/policy_dialog/policy_dialog.dart'; | import 'package:zhiying_base_widget/dialog/global_dialog/policy_dialog/policy_dialog.dart'; | ||||
@@ -271,7 +272,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker | |||||
} | } | ||||
// 活动弹窗 | // 活动弹窗 | ||||
await ActivityDialog.show(context); | |||||
await AdvertisingDialog.show(context); | |||||
await AppUpdateUtil.updateApp(context); | await AppUpdateUtil.updateApp(context); | ||||
@@ -81,7 +81,7 @@ class _CustomNoticeWidgetContainerState extends State<_CustomNoticeWidgetContain | |||||
right: ParseUtil.stringParseDouble(model?.leftRightMargin)), | right: ParseUtil.stringParseDouble(model?.leftRightMargin)), | ||||
padding: EdgeInsets.symmetric(horizontal:7.5, vertical: 7.5), | padding: EdgeInsets.symmetric(horizontal:7.5, vertical: 7.5), | ||||
child: Container( | child: Container( | ||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(7.5), color: HexColor.fromHex('#F6F6F6')), | |||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(7.5), color: HexColor.fromHex(model?.outsideBgColor??'#F6F6F6')), | |||||
padding: const EdgeInsets.only(top: 8, bottom: 8, left: 12, right: 8), | padding: const EdgeInsets.only(top: 8, bottom: 8, left: 12, right: 8), | ||||
width: double.infinity, | width: double.infinity, | ||||
child: _getChildWidget(model), | child: _getChildWidget(model), | ||||
@@ -19,6 +19,7 @@ class CustomNoticeModel { | |||||
String appNameImg; | String appNameImg; | ||||
String jumpImg; | String jumpImg; | ||||
String bg_color; | String bg_color; | ||||
String outsideBgColor; | |||||
List<NoticeListStyle> listStyle; | List<NoticeListStyle> listStyle; | ||||
CustomNoticeModel( | CustomNoticeModel( | ||||
@@ -68,6 +69,7 @@ class CustomNoticeModel { | |||||
listStyle.add(new NoticeListStyle.fromJson(v)); | listStyle.add(new NoticeListStyle.fromJson(v)); | ||||
}); | }); | ||||
} | } | ||||
outsideBgColor=json['outside_bg_color']!=null?json['outside_bg_color']:null; | |||||
} | } | ||||
Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
@@ -119,23 +119,22 @@ class _CustomSlideBannerContainerState extends State<CustomSlideBannerContainer> | |||||
Column( | Column( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Flexible( | Flexible( | ||||
flex: 6, | |||||
child: Container( | child: Container( | ||||
decoration: BoxDecoration( | |||||
color: size > 1 ? HexColor.fromHex(datas?.bgColor??"#00000000") : Colors.transparent, | |||||
borderRadius: BorderRadius.only( | |||||
topLeft: Radius.circular(double.tryParse(datas?.topLeftRadius)??0), | |||||
topRight: Radius.circular(double.tryParse(datas?.topRightRadius)??0), | |||||
bottomRight: Radius.circular(double.tryParse(datas?.bottomRightRadius)??0), | |||||
bottomLeft: Radius.circular(double.tryParse(datas?.bottomLeftRadius)??0) | |||||
) | |||||
), | |||||
width: double.infinity, | width: double.infinity, | ||||
height: double.infinity, | height: double.infinity, | ||||
color: size > 1 ? HexColor.fromHex(datas?.bgColor2??"#00000000") : Colors.transparent, | |||||
// color: Colors.yellow, | // color: Colors.yellow, | ||||
), | ), | ||||
), | ), | ||||
Flexible( | |||||
flex: 4, | |||||
child: Container( | |||||
height: double.infinity, | |||||
width: double.infinity, | |||||
color: size > 1 ? HexColor.fromHex(datas?.bgColor??"#FFFFFF") : Colors.transparent, | |||||
// color: Colors.yellow, | |||||
), | |||||
) | |||||
], | ], | ||||
), | ), | ||||
Padding( | Padding( | ||||
@@ -21,6 +21,11 @@ class CustomSlideBannerModel { | |||||
String bgColor2; | String bgColor2; | ||||
List<IndexCarouselList> indexCarouselList; | List<IndexCarouselList> indexCarouselList; | ||||
int moduleKeyId; | int moduleKeyId; | ||||
String topLeftRadius; | |||||
String topRightRadius; | |||||
String bottomLeftRadius; | |||||
String bottomRightRadius; | |||||
CustomSlideBannerModel({ | CustomSlideBannerModel({ | ||||
this.name, | this.name, | ||||
@@ -64,6 +69,10 @@ class CustomSlideBannerModel { | |||||
leftRightMargin = json['left_right_margin']; | leftRightMargin = json['left_right_margin']; | ||||
bgColor=json['bg_color']; | bgColor=json['bg_color']; | ||||
bgColor2=json['bg_color2']; | bgColor2=json['bg_color2']; | ||||
topLeftRadius=json['top_left_radius']; | |||||
topRightRadius=json['top_right_radius']; | |||||
bottomRightRadius=json['bottom_right_radius']; | |||||
bottomLeftRadius=json['bottom_left_radius']; | |||||
if (json['index_carousel_list'] != null) { | if (json['index_carousel_list'] != null) { | ||||
indexCarouselList = new List<IndexCarouselList>(); | indexCarouselList = new List<IndexCarouselList>(); | ||||
json['index_carousel_list'].forEach((v) { | json['index_carousel_list'].forEach((v) { | ||||
@@ -1,3 +1,4 @@ | |||||
import 'dart:async'; | |||||
import 'dart:convert'; | import 'dart:convert'; | ||||
import 'dart:io'; | import 'dart:io'; | ||||
import 'dart:ui'; | import 'dart:ui'; | ||||
@@ -233,6 +234,10 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { | |||||
} | } | ||||
Loading.show(context); | Loading.show(context); | ||||
Timer(Duration(milliseconds: 2000),(){ | |||||
Loading.dismiss(); | |||||
}); | |||||
SSDKMap params; | SSDKMap params; | ||||
if (widget.model.poster != null) { | if (widget.model.poster != null) { | ||||
String path = await _savePoster(); | String path = await _savePoster(); | ||||
@@ -263,11 +268,15 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { | |||||
}else if(widget?.model?.title!=null||widget.model?.content!=null){ | }else if(widget?.model?.title!=null||widget.model?.content!=null){ | ||||
type=SSDKContentTypes.text; | type=SSDKContentTypes.text; | ||||
} | } | ||||
if(plateform==ShareSDKPlatforms.qZone){ | |||||
widget?.model?.title=null; | |||||
type=SSDKContentTypes.message; | |||||
} | |||||
params = SSDKMap() | params = SSDKMap() | ||||
..setGeneral( | ..setGeneral( | ||||
widget.model?.title ?? '123', | |||||
widget.model?.content ?? '', | |||||
widget.model?.title ?? '', | |||||
widget?.model?.content??'', | |||||
Platform.isIOS ? widget.model.image : null, | Platform.isIOS ? widget.model.image : null, | ||||
Platform.isAndroid ? widget?.model?.image?.first : null, | Platform.isAndroid ? widget?.model?.image?.first : null, | ||||
null, | null, | ||||
@@ -1,4 +1,6 @@ | |||||
library zhiying_base_widget; | library zhiying_base_widget; | ||||
export 'dialog/loading/loading.dart'; | export 'dialog/loading/loading.dart'; | ||||
export 'package:flutter_swiper/flutter_swiper.dart'; | |||||
export 'package:flutter_swiper/flutter_swiper.dart'; | |||||
export 'package:zhiying_base_widget/pages/main_page/model/background_model.dart'; | |||||
export 'package:zhiying_base_widget/pages/custom_page/bloc/background_bloc.dart'; |