import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/ui/user/members_page.dart'; import 'package:project_telephony/ui/widget/check_radio.dart'; import 'package:project_telephony/ui/widget/plone_back_button.dart'; import 'package:project_telephony/ui/widget/plone_bottom.dart'; import 'package:project_telephony/ui/widget/putup_widget.dart'; import 'package:project_telephony/utils/headers.dart'; import 'package:tobias/tobias.dart'; import 'package:fluwx/fluwx.dart' as fluwx; import '../../model/pay/wx_pay_model.dart'; import '../../utils/pay_util.dart'; class MembersPage extends StatefulWidget { const MembersPage({Key? key}) : super(key: key); @override _MembersPageState createState() => _MembersPageState(); } ChooseItems? _chooseItem; List? data; final List _piceList = [ ChooseItems( month: 12, pice: 10, ), ChooseItems( month: 1, pice: 1, ), ]; int _selectIndex = 0; List payWay = [ { 'payName': '微信支付', 'payUrl': Assets.icons.weixin.path, }, {'payName': '支付宝支付', 'payUrl': Assets.icons.zhifubao.path} ]; class _MembersPageState extends State { @override Widget build(BuildContext context) { return Scaffold( body: Stack( children: [ Align( child: SizedBox( width: 750.w, height: 1624.w, ), ), Positioned( child: Image.asset( Assets.images.vipbg.path, )), Positioned(top: 256.w, left: 32.w, child: _getBanner()), Positioned( top: 480.w, child: Container( height: 1208.w, width: 750.w, decoration: const BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( topLeft: Radius.circular(20), topRight: Radius.circular(20))), child: Column(children: [ _getRecharge(), _getSpay(payWay), PloneBottom( border: true, onTap: () async { if(_chooseItem == null){ Get.snackbar('提示', "请先选择充值月份"); }else{ if (_selectIndex == 0) { _wxPayFunc(); }else{ var result = await isAliPayInstalled(); // 这里判断是否安装支付宝 if(!result){ Get.snackbar('提示', "请先安装支付宝"); }else{ aliPay("paySign").then((payResult) { // map["paySign"]是请求接口返回的字符串直接放进去就好了 print("支付宝:" + payResult.toString()); if (payResult['resultStatus'] == '9000') { Get.snackbar('提示', "充值成功"); } else { Get.snackbar('提示', payResult['memo']); } }); } } } }, textColor: const Color(0xFF333333), text: "立即开通", color1: const Color(0xFFFFF6D8), color2: const Color(0xFFFFEAB0), ) ]), )), Positioned( top: 68.w, child: Row( children: [ const CloudBackButton( isSpecial: true, ), 154.wb, Text('会员中心', style: Theme.of(context).textTheme.headline6), ], )), ], ), ); } //banner _getBanner() { return SizedBox( // margin: EdgeInsets.symmetric(horizontal: 32.w), child: Stack(children: [ Align( child: SizedBox( width: 686.w, child: Image.asset( Assets.images.vipbanner.path, width: 622.w, height: 244.w, fit: BoxFit.fill, ), )), Positioned( child: Container( margin: EdgeInsets.symmetric(horizontal: 64.w, vertical: 50.w), child: _getText())) ]), ); } //banner 文字 _getText() { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _getVip(), 18.hb, Text( "解锁全部功能", style: TextStyle( color: Colors.white, fontSize: BaseStyle.fontSize32, fontWeight: FontWeight.bold), ), 16.hb, Text( "暂未开通会员", style: TextStyle(color: Colors.white, fontSize: BaseStyle.fontSize24), ), ], ); } _getVip() { return Row( children: [ Text( "VIP", style: TextStyle( color: const Color(0xFFFFEAB0), fontFamily: "BlackItalic", fontSize: 32.sp), ), Container( width: 8.w, height: 8.w, alignment: Alignment.center, margin: EdgeInsets.symmetric(horizontal: 8.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: const Color(0xFFFFEAB0), ), ), const Text( "未开通会员", style: TextStyle( color: Color( 0xFFFFEAB0, ), fontWeight: FontWeight.w700), ) ], ); } Future _wxPayFunc() async{ bool isInstalled=await fluwx.isWeChatInstalled; if(!isInstalled){ BotToast.showText(text: "请先安装微信"); return ; } //调起支付 fluwx.payWithWeChat( appId: "wxd930ea5d5a228f5f", partnerId: "partnerId", prepayId: "prepayId", packageValue: "packageValue", nonceStr: "nonceStr", timeStamp: 1597927308, sign: "sign"); fluwx.weChatResponseEventHandler.listen((event) { if(event.isSuccessful){ BotToast.showText(text: "微信支付成功"); }else{ BotToast.showText(text: "微信支付失败"); } }); // var wxPayModel = WxPayModel.fromJson({ // "prepayId": "wx121434071826969924754d7d3309520000", // "partnerId": "1622850618", // "timeStamp": "1660286047", // "nonceStr": "W14Z6RbKcHcI6QTETFyrxteD3m2P7ZaF", // "package": "Sign=WXPay", // "sign": "i4LDk+FlAfXukLPet6oFdtVkAXHv8aKkajO4i2tiXETBqudWJPzYAaziPH3eBo1yCvkMOyoVddWDKqHXhwrN2uvubz8YpSICt9yZBcndVaXOK+X9hY765sYoFV6sGHz5iuPljTRUWWrmc8GYMEs8TlLDB5Q50NenzJSChdfDtZRV4kXtVK6xY9b0y++eUo/snzpmq/X6GwS9n0auKkT0TKW1C30/Hzpw3SMziXPP02TvBvbqj57f6rHuGJS/LUX2ZwCR8iFZsfuiXo+7lyHHsimr4jVczdS6VtobeekrPq4vTe72d/HU/ECEZRSYxsL5DbyS2TvSNzFA6Z7wGDzkpQ==" // }); // await PayUtil().callWxPay( // payModel: wxPayModel, // ); } // base ={ // "content": { // "prepayId": "wx121434071826969924754d7d3309520000", // "partnerId": "1622850618", // "timeStamp": "1660286047", // "nonceStr": "W14Z6RbKcHcI6QTETFyrxteD3m2P7ZaF", // "package": "Sign=WXPay", // "sign": "i4LDk+FlAfXukLPet6oFdtVkAXHv8aKkajO4i2tiXETBqudWJPzYAaziPH3eBo1yCvkMOyoVddWDKqHXhwrN2uvubz8YpSICt9yZBcndVaXOK+X9hY765sYoFV6sGHz5iuPljTRUWWrmc8GYMEs8TlLDB5Q50NenzJSChdfDtZRV4kXtVK6xY9b0y++eUo/snzpmq/X6GwS9n0auKkT0TKW1C30/Hzpw3SMziXPP02TvBvbqj57f6rHuGJS/LUX2ZwCR8iFZsfuiXo+7lyHHsimr4jVczdS6VtobeekrPq4vTe72d/HU/ECEZRSYxsL5DbyS2TvSNzFA6Z7wGDzkpQ==" // } // }; // await apiClient.request(API.user.wallet.assessRecharge, data: { // 'count': widget.count, // 'payType': 2, // }); // if (base.code ==null) { // // } else { // BotToast.showText(text: "${base.msg}"); // } // } // // Future _aliPayFunc() async { // var base = await apiClient.request(API.user.wallet.assessRecharge, data: { // 'count': widget.count, // 'payType': 1, // }); // if (base.code == 0) { // var re = await PayUtil().callAliPay(base.data['content']); // if (re) { // _paySuccess(); // } else { // BotToast.closeAllLoading(); // } // } else { // CloudToast.show(base.msg); // } // } //充值金额 _getRecharge() { return Container( width: double.infinity, decoration: const BoxDecoration(), clipBehavior: Clip.antiAlias, child: ListView( shrinkWrap: true, children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 80.w, vertical: 32.w), child: SortWidget( crossAxisSpacing: 24.w, itemList: _piceList, childAspectRatio: 288 / 216, crossAxisCount: 2, mainAxisSpacing: 20.w, callback: (item, index) { _chooseItem = item; // print(_piceList[index].pice); setState(() {}); }, pickItem: _chooseItem, ), ), // 762.hb, //40.hb, ], ), ); } _getSpay(List item) { return Container( // color: Colors.red, width: double.infinity, height: 500.w, margin: EdgeInsets.symmetric(horizontal: 64.w), child: ListView.builder( itemBuilder: (context, index) { return GestureDetector( onTap: () { _selectIndex = index; // print(_selectIndex); setState(() {}); }, child: Container( padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 40.w), color: Colors.white, child: Row( children: [ SizedBox( child: Image.asset( item[index]['payUrl'], width: 40.w, height: 40.h, ), ), 20.wb, SizedBox( width: 200.w, child: Text( item[index]['payName'], style: TextStyle( fontWeight: FontWeight.w700, color: BaseStyle.color333333, fontSize: BaseStyle.fontSize28), ), ), const Spacer(), BeeCheckRadio( value: index, groupValue: [_selectIndex], ), ], )), ); }, itemCount: item.length, ), ); // ListView.builder( // itemBuilder: (context, index) { // return GestureDetector( // onTap: () { // _selectIndex = index; // // setState(() {}); // }, // child: Container( // padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 40.w), // color: Colors.white, // child: Row( // children: [ // SizedBox( // child: Image.asset( // item[index]['payUrl'], // width: 40.w, // height: 40.h, // ), // ), // 20.wb, // SizedBox( // width: 200.w, // child: Text( // item[index]['payName'], // style: TextStyle( // color: BaseStyle.color333333, // fontSize: BaseStyle.fontSize28), // ), // ), // const Spacer(), // BeeCheckRadio( // value: index, // groupValue: [_selectIndex], // ), // ], // )), // ); // }, // itemCount: item.length, // ); } }