diff --git a/circle_app/android/app/build.gradle b/circle_app/android/app/build.gradle index dc14276..d077b20 100644 --- a/circle_app/android/app/build.gradle +++ b/circle_app/android/app/build.gradle @@ -43,10 +43,7 @@ android { } signingConfigs { -// ndk { -// abiFilters 'armeabi-v7a','arm64-v8a' -// ldLibs "log" -// } + debug { storeFile file('../leyuan.jks') storePassword 'leyuan' @@ -69,16 +66,21 @@ android { targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName + ndk { + abiFilters 'armeabi-v7a', 'arm64-v8a' + ldLibs "log" + } } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. + //flutter build apk --no-sound-null-safety signingConfig signingConfigs.debug project.ext.enableFlutterNullSafety = false } - debug{ + debug { project.ext.enableFlutterNullSafety = false } } diff --git a/circle_app/assets/images/home/icon_vip.png b/circle_app/assets/images/home/icon_vip.png index d3ee4de..d6c91f5 100644 Binary files a/circle_app/assets/images/home/icon_vip.png and b/circle_app/assets/images/home/icon_vip.png differ diff --git a/circle_app/lib/app/call_out/logic.dart b/circle_app/lib/app/call_out/logic.dart index 0428510..1ab5643 100644 --- a/circle_app/lib/app/call_out/logic.dart +++ b/circle_app/lib/app/call_out/logic.dart @@ -18,6 +18,7 @@ import '../../network/dio_manager.dart'; import '../../router/app_routers.dart'; import '../../util/SharedPreferencesHelper.dart'; import '../../util/qiniu.dart'; +import '../circle/logic.dart'; import '../select_circle/logic.dart'; import 'state.dart'; import '../../common/config.dart'; @@ -50,9 +51,11 @@ class Call_outLogic extends GetxController { circleName = numbers[0].name; SharedPreferencesHelper.getInstance().then((sharedPreferences) { vip = sharedPreferences.getInt(SharedPreferencesHelper.VIP); + print(vip); if (vip == 2) { isCheck = true; } + update(); }); update(); @@ -127,6 +130,7 @@ class Call_outLogic extends GetxController { myBean.add(MyBean(type: 2, url: state.videolist[0]).toJson()); } print(myBean.toString()); + SmartDialog.showLoading(); var data = await DioManager.instance.post(url: Api.SendShout, params: { 'album': myBean, 'content': textEditingController.text.trim(), @@ -138,9 +142,11 @@ class Call_outLogic extends GetxController { data, (jsonData) => jsonData, ); - + SmartDialog.dismiss(); if (beandata.isSuccess()) { showToast(beandata.msg); + final logic = Get.put(CircleLogic()); + logic.refresh(); // Navigator.pop(Get.context!, numbers); Get.back(); } else if (beandata.code == 30503) { diff --git a/circle_app/lib/app/call_out/view.dart b/circle_app/lib/app/call_out/view.dart index 6c0f57b..894ed01 100644 --- a/circle_app/lib/app/call_out/view.dart +++ b/circle_app/lib/app/call_out/view.dart @@ -181,29 +181,32 @@ class Call_outPage extends StatelessWidget { controller.isCheck = !controller.isCheck; controller.update(); }else{ + showToast("至尊喊话为年会员特权,开通年会员即可享受哦~"); controller.showRechargeDialog(); } }, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - getCircleImage(controller.isCheck - ? 'check' - : 'uncheck'), - width: 17.5.sp, - ), - SizedBox( - width: 4.sp, - ), - Text( - '使用至尊喊话', - style: TextStyle( - color: Colors.white, - fontSize: 16.sp), - ) - ], + child: Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + getCircleImage(controller.isCheck + ? 'check' + : 'uncheck'), + width: 17.5.sp, + ), + SizedBox( + width: 4.sp, + ), + Text( + '使用至尊喊话', + style: TextStyle( + color: Colors.white, + fontSize: 16.sp), + ) + ], + ), ), ), ), diff --git a/circle_app/lib/app/circle/widgets/info_list_view.dart b/circle_app/lib/app/circle/widgets/info_list_view.dart index 8226118..7f1b9af 100644 --- a/circle_app/lib/app/circle/widgets/info_list_view.dart +++ b/circle_app/lib/app/circle/widgets/info_list_view.dart @@ -182,9 +182,6 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie @override Widget build(BuildContext context) { - - - List urlList = widget.bean.lastJoinUsers; List widgets = []; int i = 0; @@ -589,7 +586,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie String myUserId = sp.getMyUserId(); if(lists.user?.id!.toString() == myUserId){ - Get.toNamed(AppRoutes.UserInfoActivity, arguments: {}); + Get.toNamed(AppRoutes.UserInfoActivity); return; } if (widget.bean.is_limit) { @@ -612,7 +609,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie lists.user!.avatar!, width: 40.sp, height: 40.sp, - fit: BoxFit.fill, + fit: BoxFit.cover, ), ) ], @@ -884,7 +881,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie var sp = await SharedPreferencesHelper.getInstance(); String myUserId = sp.getMyUserId(); if(lists.user?.id!.toString() == myUserId){ - Get.toNamed(AppRoutes.UserInfoActivity, arguments: ""); + Get.toNamed(AppRoutes.UserInfoActivity); return; } if (widget.bean.is_limit&&widget.bean.amount > 0) { diff --git a/circle_app/lib/app/login/complete_material/view.dart b/circle_app/lib/app/login/complete_material/view.dart index 29ce859..720f06a 100644 --- a/circle_app/lib/app/login/complete_material/view.dart +++ b/circle_app/lib/app/login/complete_material/view.dart @@ -10,7 +10,6 @@ import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_pickers/time_picker/model/pduration.dart'; import 'package:flutter_pickers/time_picker/model/suffix.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'logic.dart'; @@ -35,7 +34,7 @@ class Complete_materialPage extends StatelessWidget { ), ), Scaffold( - appBar: MyAppBar( + appBar: const MyAppBar( centerTitle: '完善您的个人形象', isBack: true, ), diff --git a/circle_app/lib/app/minefragment/logic.dart b/circle_app/lib/app/minefragment/logic.dart index 0f7d67d..b679be2 100644 --- a/circle_app/lib/app/minefragment/logic.dart +++ b/circle_app/lib/app/minefragment/logic.dart @@ -28,6 +28,7 @@ class MinefragmentLogic extends GetxController { String enterHomeInfoMsg = "进入主页"; String joinedCircle = ""; + String vipMsg = "九大专属特权等你领取"; @override void onInit() async { diff --git a/circle_app/lib/app/minefragment/view.dart b/circle_app/lib/app/minefragment/view.dart index e5f9017..4268771 100644 --- a/circle_app/lib/app/minefragment/view.dart +++ b/circle_app/lib/app/minefragment/view.dart @@ -51,12 +51,17 @@ class MinefragmentPage extends StatelessWidget { GestureDetector( onTap: () { showRechargeDialog(); - }, - child: Image( - image: AssetImage(getHomeImage("icon_vip")), - fit: BoxFit.fill, - ), + child: Stack(children: [ + Image( + image: AssetImage(getHomeImage("icon_vip")), + fit: BoxFit.fill, + ), + Positioned( + top: 54.sp, + left: 71.3.sp, + child: Text(logic.vipMsg,style: TextStyle(color: const Color(0x99FFFFFF),fontSize: 12.sp),)) + ],), ), _circleLiveView(logic), ], @@ -365,7 +370,7 @@ class MinefragmentPage extends StatelessWidget { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () async{ - await Get.toNamed(AppRoutes.UserInfoActivity, arguments: ""); + await Get.toNamed(AppRoutes.UserInfoActivity); logic.onInit(); }, child: SizedBox( diff --git a/circle_app/lib/app/swiper/view.dart b/circle_app/lib/app/swiper/view.dart index 33a6519..d5ef76f 100644 --- a/circle_app/lib/app/swiper/view.dart +++ b/circle_app/lib/app/swiper/view.dart @@ -31,7 +31,7 @@ class _SwiperPageState extends State { controller: logic.swiperController, index:logic.index, itemBuilder: (BuildContext context, int index) { - return Container( + return SizedBox( width: double.infinity, child: Image.network( logic.imgList[index], fit: BoxFit.contain,) diff --git a/circle_app/lib/app/text/view.dart b/circle_app/lib/app/text/view.dart index 92e0684..0b87d9a 100644 --- a/circle_app/lib/app/text/view.dart +++ b/circle_app/lib/app/text/view.dart @@ -7,7 +7,7 @@ import 'package:get/get_core/src/get_main.dart'; import 'package:get/get_state_manager/src/simple/get_state.dart'; import '../../components/my_app_bar.dart'; - +//TODO 上线前再删 class TextPage extends StatefulWidget { @override State createState() => _MyTabbedScreenState(); diff --git a/circle_app/lib/app/userinfo/logic.dart b/circle_app/lib/app/userinfo/logic.dart index ad8fc15..dcb5306 100644 --- a/circle_app/lib/app/userinfo/logic.dart +++ b/circle_app/lib/app/userinfo/logic.dart @@ -141,6 +141,8 @@ class UserinfoLogic extends GetxController { showToast("催更成功"); isUrgeStatus = true; update(); + }else { + showToast(bean.msg); } } diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart index af692f6..c132a81 100644 --- a/circle_app/lib/app/userinfo/view.dart +++ b/circle_app/lib/app/userinfo/view.dart @@ -410,11 +410,13 @@ class _MyTabbedScreenState extends State ), itemCount: controller.isMe ? controller.isEdit + ? controller.state.imaglist.length<15 ? controller.state.imaglist.length + 1 + :controller.state.imaglist.length : controller.state.imaglist.length : controller.state.imaglist.length, itemBuilder: (BuildContext context, int index) { - if (controller.isMe && controller.isEdit) { + if (controller.isMe && controller.isEdit&&controller.state.imaglist.length<15) { if (index == 0) { return GestureDetector( onTap: () { diff --git a/circle_app/lib/common/Widgets/base_tip_widget.dart b/circle_app/lib/common/Widgets/base_tip_widget.dart index e6b7a88..aedfa1b 100644 --- a/circle_app/lib/common/Widgets/base_tip_widget.dart +++ b/circle_app/lib/common/Widgets/base_tip_widget.dart @@ -1,5 +1,4 @@ import 'dart:io'; -import 'dart:math'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; @@ -65,7 +64,7 @@ joiinCircileTipWdiget(String cicleId, String pirce, String oldPrice, child: Text( '为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的;3、谢绝只会白嫖的猎奇人士。', style: TextStyle( - color: Color.fromRGBO(247, 250, 250, 0.8), + color: const Color.fromRGBO(247, 250, 250, 0.8), fontSize: 12.sp)), )), Platform.isIOS @@ -102,7 +101,7 @@ joiinCircileTipWdiget(String cicleId, String pirce, String oldPrice, Text( '支付宝支付', style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 14.0.sp, ), ), @@ -141,7 +140,7 @@ joiinCircileTipWdiget(String cicleId, String pirce, String oldPrice, Text( '微信支付', style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 14.0.sp, ), ), @@ -180,31 +179,29 @@ joiinCircileTipWdiget(String cicleId, String pirce, String oldPrice, )), Positioned( bottom: 72.sp, - child: Container( - child: Row( - children: [ - Text( - '¥$pirce', - style: TextStyle( - color: Color(0xffE845FF), - fontSize: 16.sp, - fontWeight: FontWeight.w600), - ), - SizedBox( - width: 2.sp, - ), - Text( - '(原价$oldPrice)', - style: TextStyle( - color: Colors.white70, + child: Row( + children: [ + Text( + '¥$pirce', + style: TextStyle( + color: Color(0xffE845FF), fontSize: 16.sp, - fontWeight: FontWeight.w400, - decoration: TextDecoration.lineThrough, - decorationColor: Colors.white70, - ), + fontWeight: FontWeight.w600), + ), + SizedBox( + width: 2.sp, + ), + Text( + '(原价$oldPrice)', + style: TextStyle( + color: Colors.white70, + fontSize: 16.sp, + fontWeight: FontWeight.w400, + decoration: TextDecoration.lineThrough, + decorationColor: Colors.white70, ), - ], - ), + ), + ], )) ], ), diff --git a/circle_app/lib/common/Widgets/open_vip_tip/view.dart b/circle_app/lib/common/Widgets/open_vip_tip/view.dart index 9172501..898948d 100644 --- a/circle_app/lib/common/Widgets/open_vip_tip/view.dart +++ b/circle_app/lib/common/Widgets/open_vip_tip/view.dart @@ -85,7 +85,7 @@ class Open_vip_tipPage extends StatelessWidget { )), Positioned( top: 44.sp, - child: Container( + child: SizedBox( width: Get.width, height: 180.sp, child: Swiper( @@ -98,9 +98,9 @@ class Open_vip_tipPage extends StatelessWidget { autoplay: true, pagination: SwiperPagination( builder: DotSwiperPaginationBuilder( - color: Color(0x99FFFFFF), + color: const Color(0x99FFFFFF), size: 4.sp, - activeColor: Color(0xFF00FFD2), + activeColor: const Color(0xFF00FFD2), activeSize: 4.sp)), //如果不填则不显示指示点 ), )), @@ -155,7 +155,7 @@ class Open_vip_tipPage extends StatelessWidget { Text( '支付宝支付', style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 14.0.sp, ), ), @@ -192,7 +192,7 @@ class Open_vip_tipPage extends StatelessWidget { Text( '微信支付', style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 14.0.sp, ), ), @@ -235,29 +235,27 @@ class Open_vip_tipPage extends StatelessWidget { ),)), Positioned( bottom: 17.sp, - child: Container( - child: Row( - children: [ - Text( - '点击加入即表示同意', - style: TextStyle( - color: Colors.white, - fontSize: 11.sp, - fontWeight: FontWeight.w600), - ), - SizedBox( - width: 2.sp, - ), - Text( - '《合伙人协议》', - style: TextStyle( - color: Color(0xff00FFF4), + child: Row( + children: [ + Text( + '点击加入即表示同意', + style: TextStyle( + color: Colors.white, fontSize: 11.sp, - fontWeight: FontWeight.w400, - ), + fontWeight: FontWeight.w600), + ), + SizedBox( + width: 2.sp, + ), + Text( + '《合伙人协议》', + style: TextStyle( + color: const Color(0xff00FFF4), + fontSize: 11.sp, + fontWeight: FontWeight.w400, ), - ], - ), + ), + ], )) ], ), @@ -296,7 +294,7 @@ class Open_vip_tipPage extends StatelessWidget { width: isSelected ? 96.sp : 98.sp, height: isSelected ? 108.sp : 110.sp, decoration: BoxDecoration( - color: Color.fromRGBO(255, 255, 255, 0.1), + color: const Color.fromRGBO(255, 255, 255, 0.1), borderRadius: BorderRadius.circular(10.sp), ), child: Column( @@ -338,43 +336,41 @@ class Open_vip_tipPage extends StatelessWidget { controller.priceBean[index].isYearVip ? Positioned( top: 0.sp, left: 0.sp, - child: Image.asset(getMineImage("icon_yean_vip")), width: 44.sp, height: 18.sp, + child: Image.asset(getMineImage("icon_yean_vip")), ) :Container() ], )); } funcItem(String func, String funcDesc, int index) { - return Container( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - getBaseImage('vip_fun_$index'), - width: 70.sp, - ), - SizedBox( - height: 14.sp, - ), - Text( - func, + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + getBaseImage('vip_fun_$index'), + width: 70.sp, + ), + SizedBox( + height: 14.sp, + ), + Text( + func, + style: TextStyle( + color: Colors.white, + fontSize: 14.sp, + fontWeight: FontWeight.w500), + ), + SizedBox( + height: 4.sp, + ), + Text(funcDesc, style: TextStyle( - color: Colors.white, - fontSize: 14.sp, - fontWeight: FontWeight.w500), - ), - SizedBox( - height: 4.sp, - ), - Text(funcDesc, - style: TextStyle( - color: Colors.white, - fontSize: 12.sp, - )) - ], - ), + color: Colors.white, + fontSize: 12.sp, + )) + ], ); } } diff --git a/circle_app/lib/util/PaymentUtils.dart b/circle_app/lib/util/PaymentUtils.dart index e9034ce..a4fb2a1 100644 --- a/circle_app/lib/util/PaymentUtils.dart +++ b/circle_app/lib/util/PaymentUtils.dart @@ -51,7 +51,9 @@ Future openWxPay(PaymentData data, WxPayCallback callback) async { } }); } -late final StreamSubscription _paySubs; + + StreamSubscription? _paySubs = null; + /// 返回码,标识支付状态,含义如下: /// 9000——订单支付成功 下面的result有值 /// 8000——正在处理中 @@ -61,29 +63,45 @@ late final StreamSubscription _paySubs; /// 6002——网络连接出错 void _listenPay(AlipayResp resp) { final String content = 'pay: ${resp.resultStatus} - ${resp.result}'; - if(resp.resultStatus == 9000){ - callback(true,resp.result); - }else{ - callback(false,resp.result); + if (resp.resultStatus == 9000) { + callback(true, resp.result); + } else { + switch(resp.resultStatus){ + case 8000: + showToast("正在处理中"); + break; + case 4000: + showToast("订单支付失败"); + break; + case 5000: + showToast("重复请求"); + break; + case 6001: + showToast("取消支付"); + break; + case 6002: + showToast("网络连接出错"); + break; + } + callback(false, resp.result); } - print(content ); + print("payment"+content); } -late WxPayCallback callback ; -openAliPay(String payUrl,WxPayCallback myCallback)async{ + +late WxPayCallback callback; + +openAliPay(String payUrl, WxPayCallback myCallback) async { callback = myCallback; - bool isInstalled =await AlipayKitPlatform.instance.isInstalled(); + bool isInstalled = await AlipayKitPlatform.instance.isInstalled(); if (!isInstalled) { showToast("请先安装支付宝"); return; } - if(null==_paySubs){ - _paySubs = AlipayKitPlatform.instance.payResp().listen(_listenPay); + if (null == _paySubs) { + _paySubs = AlipayKitPlatform.instance.payResp().listen(_listenPay); } - - var data = await AlipayKitPlatform.instance.pay( - orderInfo: payUrl, - isShowLoading :true - ); + var data = await AlipayKitPlatform.instance + .pay(orderInfo: payUrl, isShowLoading: true); }