diff --git a/circle_app/lib/app/call_out/logic.dart b/circle_app/lib/app/call_out/logic.dart index 62e1da8..0428510 100644 --- a/circle_app/lib/app/call_out/logic.dart +++ b/circle_app/lib/app/call_out/logic.dart @@ -81,7 +81,7 @@ class Call_outLogic extends GetxController { Get.bottomSheet( Scaffold( backgroundColor: Colors.transparent, - body: Open_vip_tipPage(), + body: Open_vip_tipPage(true), ), isScrollControlled: true, enableDrag: false); diff --git a/circle_app/lib/app/minefragment/view.dart b/circle_app/lib/app/minefragment/view.dart index 2d5f7ac..e5f9017 100644 --- a/circle_app/lib/app/minefragment/view.dart +++ b/circle_app/lib/app/minefragment/view.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import '../../common/Widgets/open_vip_tip/view.dart'; import '../../util/SharedPreferencesHelper.dart'; import '../../util/util.dart'; import 'logic.dart'; @@ -47,9 +48,15 @@ class MinefragmentPage extends StatelessWidget { children: [ _buildAvatarRow(logic), _friendsRow(logic), - Image( - image: AssetImage(getHomeImage("icon_vip")), - fit: BoxFit.fill, + GestureDetector( + onTap: () { + showRechargeDialog(); + + }, + child: Image( + image: AssetImage(getHomeImage("icon_vip")), + fit: BoxFit.fill, + ), ), _circleLiveView(logic), ], @@ -509,4 +516,15 @@ class MinefragmentPage extends StatelessWidget { ], ); } + + showRechargeDialog(){ + Get.bottomSheet( + Scaffold( + backgroundColor: Colors.transparent, + body: Open_vip_tipPage(false), + ), + isScrollControlled: true, + enableDrag: false); + + } } diff --git a/circle_app/lib/common/Widgets/open_vip_tip/logic.dart b/circle_app/lib/common/Widgets/open_vip_tip/logic.dart index aa282cd..25ea9cd 100644 --- a/circle_app/lib/common/Widgets/open_vip_tip/logic.dart +++ b/circle_app/lib/common/Widgets/open_vip_tip/logic.dart @@ -1,4 +1,3 @@ - import 'package:circle_app/util/util.dart'; import 'package:get/get.dart'; @@ -10,15 +9,33 @@ import 'state.dart'; class Open_vip_tipLogic extends GetxController { List priceBean = []; bool isZfbPrice = true; + bool isYean = false; @override void onInit() async { super.onInit(); var data = await DioManager.instance.get(url: Api.getVipPrice, params: {}); - var vipPriceList = BaseResponse>.fromJson(data, (data) => + var vipPriceList = BaseResponse>.fromJson( + data, + (data) => List.from(data.map((item) => PriceBean.fromJson(item))), ); priceBean = vipPriceList.data; + if (isYean) { + setYean(); + } + update(); + } + + setYean() { + isYean = true; + if (priceBean.length > 0) { + for (var value in priceBean) { + if (value.isYearVip) { + index = priceBean.indexOf(value); + } + } + } update(); } @@ -27,43 +44,43 @@ class Open_vip_tipLogic extends GetxController { startPayment() async { if (isZfbPrice) { - var data = await DioManager.instance.post(url: Api.postAliPayOrder, params: {"product_id": priceBean[index].id, "type": 2}); - var bean = BaseResponse.fromJson(data, (data) => PayUrlBean.fromJson(data)); - if(bean.isSuccess()){ - openAliPay(bean.data.payUrl,(isSuccess,errorMsg){ + var data = await DioManager.instance.post( + url: Api.postAliPayOrder, + params: {"product_id": priceBean[index].id, "type": 2}); + var bean = BaseResponse.fromJson( + data, (data) => PayUrlBean.fromJson(data)); + if (bean.isSuccess()) { + openAliPay(bean.data.payUrl, (isSuccess, errorMsg) { if (isSuccess) { // 处理支付成功 } else { // 处理支付失败,errorMessage 可能为 null } }); - }else { + } else { showToast(bean.msg); } - - } else{ - var data = await DioManager.instance.post(url: Api.postWxOrder, params: {"product_id": priceBean[index].id, "type": 2}); - var bean = BaseResponse.fromJson(data, (data) => PaymentData.fromJson(data)); - if(bean.isSuccess()){ - openWxPay(bean.data,(bool isSuccess, String? errorMessage) { + } else { + var data = await DioManager.instance.post( + url: Api.postWxOrder, + params: {"product_id": priceBean[index].id, "type": 2}); + var bean = BaseResponse.fromJson( + data, (data) => PaymentData.fromJson(data)); + if (bean.isSuccess()) { + openWxPay(bean.data, (bool isSuccess, String? errorMessage) { if (isSuccess) { // 处理支付成功 } else { // 处理支付失败,errorMessage 可能为 null } }); - }else { + } else { showToast(bean.msg); } } } } - - - - - class PayUrlBean { String payUrl; @@ -78,8 +95,6 @@ class PayUrlBean { } } - - class PaymentData { String appId; String mchId; @@ -112,13 +127,12 @@ class PaymentData { } } - - class PriceBean { int id; String title; double amount; double oldAmount; + bool isYearVip; String iosItem; PriceBean({ @@ -126,16 +140,18 @@ class PriceBean { required this.title, required this.amount, required this.oldAmount, + required this.isYearVip, required this.iosItem, }); factory PriceBean.fromJson(Map json) { return PriceBean( - id: json['id'], - title: json['title'], - amount: json['amount'].toDouble(), - oldAmount: json['old_amount'].toDouble(), - iosItem: json['ios_item'], + id: json['id'] as int, + title: json['title'] as String, + amount: json['amount'] as double, + oldAmount: json['old_amount'] as double, + isYearVip: json['is_year_vip'] as bool, + iosItem: json['ios_item'] as String, ); } } 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 f7b7f60..9172501 100644 --- a/circle_app/lib/common/Widgets/open_vip_tip/view.dart +++ b/circle_app/lib/common/Widgets/open_vip_tip/view.dart @@ -9,7 +9,9 @@ import 'package:get/get.dart'; import 'logic.dart'; class Open_vip_tipPage extends StatelessWidget { - Open_vip_tipPage({Key? key}) : super(key: key); + final bool isYean; + + Open_vip_tipPage(this.isYean, {Key? key}) : super(key: key); final logic = Get.put(Open_vip_tipLogic()); final state = Get.find().state; @@ -44,6 +46,9 @@ class Open_vip_tipPage extends StatelessWidget { // } return GetBuilder(builder: (Open_vip_tipLogic controller) { + if(isYean){ + controller.setYean(); + } return Scaffold( backgroundColor: Colors.transparent, body: SizedBox( @@ -91,7 +96,7 @@ class Open_vip_tipPage extends StatelessWidget { }, loop: true, autoplay: true, - pagination: new SwiperPagination( + pagination: SwiperPagination( builder: DotSwiperPaginationBuilder( color: Color(0x99FFFFFF), size: 4.sp, @@ -268,8 +273,13 @@ class Open_vip_tipPage extends StatelessWidget { String formattedPricePerDay = '${pricePerDay.toStringAsFixed(2)}元/天'; return GestureDetector( onTap: () { - controller.index = index; - controller.update(); + if(!isYean){ + controller.index = index; + controller.update(); + }else{ + showToast("只有年会员才可使用至尊喊话哦~"); + } + }, child: Stack( alignment: Alignment.center, @@ -292,6 +302,7 @@ class Open_vip_tipPage extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + SizedBox(height: 0.1.sp,), Text( controller.priceBean[index].title, style: TextStyle(color: Colors.white, fontSize: 14.sp), @@ -324,7 +335,7 @@ class Open_vip_tipPage extends StatelessWidget { ], ), ), - controller.priceBean[index].title=="年度会员"? Positioned( + controller.priceBean[index].isYearVip ? Positioned( top: 0.sp, left: 0.sp, child: Image.asset(getMineImage("icon_yean_vip")),