开通vip相关
This commit is contained in:
parent
82f5a38c6c
commit
66740977ab
@ -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);
|
||||
|
||||
@ -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,10 +48,16 @@ class MinefragmentPage extends StatelessWidget {
|
||||
children: [
|
||||
_buildAvatarRow(logic),
|
||||
_friendsRow(logic),
|
||||
Image(
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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> 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<List<PriceBean>>.fromJson(data, (data) =>
|
||||
var vipPriceList = BaseResponse<List<PriceBean>>.fromJson(
|
||||
data,
|
||||
(data) =>
|
||||
List<PriceBean>.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,8 +44,11 @@ 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<PayUrlBean>.fromJson(data, (data) => PayUrlBean.fromJson(data));
|
||||
var data = await DioManager.instance.post(
|
||||
url: Api.postAliPayOrder,
|
||||
params: {"product_id": priceBean[index].id, "type": 2});
|
||||
var bean = BaseResponse<PayUrlBean>.fromJson(
|
||||
data, (data) => PayUrlBean.fromJson(data));
|
||||
if (bean.isSuccess()) {
|
||||
openAliPay(bean.data.payUrl, (isSuccess, errorMsg) {
|
||||
if (isSuccess) {
|
||||
@ -40,10 +60,12 @@ class Open_vip_tipLogic extends GetxController {
|
||||
} 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<PaymentData>.fromJson(data, (data) => PaymentData.fromJson(data));
|
||||
var data = await DioManager.instance.post(
|
||||
url: Api.postWxOrder,
|
||||
params: {"product_id": priceBean[index].id, "type": 2});
|
||||
var bean = BaseResponse<PaymentData>.fromJson(
|
||||
data, (data) => PaymentData.fromJson(data));
|
||||
if (bean.isSuccess()) {
|
||||
openWxPay(bean.data, (bool isSuccess, String? errorMessage) {
|
||||
if (isSuccess) {
|
||||
@ -59,11 +81,6 @@ class Open_vip_tipLogic extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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<String, dynamic> 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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Open_vip_tipLogic>().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: () {
|
||||
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")),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user