Commit 303bed5d87aa3e68f56502339ecf322f38bce1a4

Authored by wdn127929
1 parent 0db2f4ec

短信购买,差微信支付

... ... @@ -67,6 +67,8 @@ class Meals extends Object {
@JsonKey(name: 'discount')
String discount;
bool selected = false;
Meals(
this.id,
this.packageName,
... ...
... ... @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/models/sms_info.dart';
import 'package:one_key/provider/my_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
... ... @@ -113,7 +114,8 @@ class _SmsManagerPageState extends State<SmsManagerPage> {
isBold: true,
imgWidth: 26,
onPressed: () {
// NavigatorUtil.goBaseInfoPage(context);
NavigatorUtil.goSmsRechargePage(context,
smsInfoData: widget.infoData);
},
),
Positioned(
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/sms_info.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/v_empty_view.dart';
class SmsRechargeItemPage extends StatefulWidget {
Meals meals;
GestureTapCallback callback;
SmsRechargeItemPage({Key key, this.meals, this.callback}) : super(key: key);
@override
_SmsRechargeItemPageState createState() => _SmsRechargeItemPageState();
}
class _SmsRechargeItemPageState extends State<SmsRechargeItemPage> {
@override
Widget build(BuildContext context) {
return InkWell(
onTap: widget.callback,
child: Stack(
clipBehavior: Clip.none,
children: [
Container(
decoration: BoxDecoration(
color: widget.meals.selected
? MyColours.color_199095
: MyColours.color_ffffff,
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(10)),
border: Border.all(
width: ScreenUtil().setWidth(2),
color: MyColours.color_E0E0E0,
)),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
vertical: ScreenUtil().setWidth(20)),
margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(30)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
'${widget.meals.total}条',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(34),
color: widget.meals.selected
? MyColours.color_F0F0F0
: MyColours.color_333333),
),
VEmptyView(20),
Text('约${widget.meals.priceAve}元/条',
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: widget.meals.selected
? MyColours.color_F0F0F0
: MyColours.color_333333)),
],
),
Container(
width: ScreenUtil().setWidth(150),
margin: EdgeInsets.only(top: ScreenUtil().setWidth(30)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
'¥${widget.meals.price}',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(34),
color: widget.meals.selected
? MyColours.color_F0F0F0
: MyColours.color_333333),
),
widget.meals.price == widget.meals.priceOld
? SizedBox()
: Text('¥${widget.meals.priceOld}',
style: TextStyle(
decoration: TextDecoration.lineThrough,
fontSize: ScreenUtil().setSp(30),
color: widget.meals.selected
? MyColours.color_F0F0F0
: MyColours.color_999999)),
],
),
),
],
)),
widget.meals.discount == '0'
? SizedBox()
: Positioned(
top: -5,
right: -2,
child: Container(
// padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(16),vertical: ScreenUtil().setWidth(4)),
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(6),
bottom: ScreenUtil().setWidth(10)),
alignment: Alignment.center,
width: ScreenUtil().setWidth(44 * 2),
height: ScreenUtil().setWidth(61),
decoration: BoxDecoration(
// color: Colors.red,
image: DecorationImage(
image: ExactAssetImage(
Utils.getImgPath('sms_manager'),
),
fit: BoxFit.cover,
),
),
child: Text(
'${widget.meals.discount}折',
style: TextStyle(
color: MyColours.color_fefefe,
fontSize: ScreenUtil().setSp(24)),
)))
],
),
);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/sms_info.dart';
import 'package:one_key/pages/my/sms_recharge_item_page.dart';
import 'package:one_key/provider/sms_recharge_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'package:fluwx/fluwx.dart' as fluwx;
class SmsRechargePage extends StatefulWidget {
final SmsInfoData infoData;
SmsRechargePage({Key key, this.infoData}) : super(key: key);
@override
_SmsRechargePageState createState() => _SmsRechargePageState();
}
class _SmsRechargePageState extends State<SmsRechargePage> {
ScrollController controller = ScrollController();
Meals mealsSelected;
SmsRechargeModel rechargeModel;
@override
Widget build(BuildContext context) {
rechargeModel = Provider.of<SmsRechargeModel>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'短信充值',
onTap: () {
EventBus().emit('changeStatusColor');
Navigator.pop(context);
},
),
body: WillPopScope(
onWillPop: () async {
EventBus().emit('changeStatusColor');
return true;
},
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: controller,
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
VEmptyView(40),
Text(
'短信套餐',
style: TextStyle(
fontSize: ScreenUtil().setSp(38),
fontWeight: FontWeight.bold),
),
VEmptyView(30),
Text('购买套餐,使用更划算',
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333)),
ListView.builder(
shrinkWrap: true,
controller: controller,
physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(40)),
itemBuilder: (BuildContext contxt, int index) {
return SmsRechargeItemPage(
meals: widget.infoData.meals[index],
callback: () {
for (Meals item
in widget.infoData.meals) {
item.selected = false;
}
setState(() {
widget.infoData.meals[index].selected =
true;
mealsSelected =
widget.infoData.meals[index];
});
});
},
itemCount: widget.infoData.meals.length,
scrollDirection: Axis.vertical,
)
],
),
))),
Container(
height: ScreenUtil().setWidth(160),
width: double.infinity,
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)),
decoration: BoxDecoration(
border: Border(
top: BorderSide(
width: ScreenUtil().setWidth(2),
color: MyColours.color_E0E0E0,
))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
mealsSelected == null
? '剩余${widget.infoData.lastNum}条短信,请及时充值以保证正常使用'
: '${mealsSelected.price}元',
// maxLines: 2,
style: mealsSelected == null
? TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333)
: TextStyle(
fontSize: ScreenUtil().setSp(36),
fontWeight: FontWeight.bold))),
HEmptyView(80),
RoundButton(
radius: ScreenUtil().setWidth(10),
text: '购买',
fontSize: 34,
width: ScreenUtil().setWidth(160),
height: ScreenUtil().setWidth(70),
textColor: MyColours.color_F0F0F0,
onPressed: () async {
//1.接口请求微信支付所需参数
//2.成功后掉起微信支付
Map<String, String> params;
bool success = await rechargeModel.getWechatPayInfo(
context, params);
if (success) {
//掉起微信支付
// fluwx
// .payWithWeChat(
// appId: result['appid'].toString(),
// partnerId: result['partnerid'].toString(),
// prepayId: result['prepayid'].toString(),
// packageValue: result['package'].toString(),
// nonceStr: result['noncestr'].toString(),
// timeStamp: result['timestamp'],
// sign: result['sign'].toString(),
// )
// .then((data) {
// print("---》$data");
// });
} else {
//给用户提示错误
}
},
isBold: true,
),
],
),
)
],
),
));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/utils/utils.dart';
/**
* 短信充值
*/
class SmsRechargeModel extends ChangeNotifier {
//获取微信支付所需参数
getWechatPayInfo(BuildContext context, Map<String, String> params,
{bool showPageLoading = false}) async {
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.get_custom_remark,
data: params, showLoading: showPageLoading ? false : true)
.catchError((error) {
print(error.toString());
if (error is MyError) {}
});
if (baseResp != null && baseResp.code == Constant.status_success) {
} else {
Utils.showToast(baseResp.msg ?? "");
}
notifyListeners();
}
}
... ...
... ... @@ -343,11 +343,19 @@ class NavigatorUtil {
replace: replace);
}
/// 短信充值
/// 短信余额显示
static Future<dynamic> goSmsManagePage(BuildContext context,
{replace = false, SmsInfoData smsInfoData}) {
return _navigateTo(context,
"${Routes.sms_manager_page}?smsInfoData=${FluroConvertUtils.object2string(smsInfoData)}",
replace: replace);
}
/// 短信充值
static Future<dynamic> goSmsRechargePage(BuildContext context,
{replace = false, SmsInfoData smsInfoData}) {
return _navigateTo(context,
"${Routes.sms_recharge_page}?smsInfoData=${FluroConvertUtils.object2string(smsInfoData)}",
replace: replace);
}
}
... ...
... ... @@ -41,6 +41,7 @@ import 'package:one_key/pages/my/my_integral_page.dart';
import 'package:one_key/pages/my/receive_orders_time_set.dart';
import 'package:one_key/pages/my/remark_manager_page.dart';
import 'package:one_key/pages/my/sms_manager.dart';
import 'package:one_key/pages/my/sms_recharge_page.dart';
import 'package:one_key/pages/my/store_type_fill_manage_page.dart';
import 'package:one_key/pages/notebook/statistics_page.dart';
import 'package:one_key/pages/notebook/statistics_sms_page.dart';
... ... @@ -62,6 +63,7 @@ import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/order_food_provider.dart';
import 'package:one_key/provider/other_login_provider.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/provider/sms_recharge_provider.dart';
import 'package:one_key/provider/statistics_provider.dart';
import 'package:one_key/provider/store_detail_model.dart';
import 'package:one_key/provider/table_photo_manager_provider.dart';
... ... @@ -526,7 +528,7 @@ var storeTypeFillManagePageHandler = new Handler(
// create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage());
});
///短信充值
///短信余额显示
var smsManagerPageHandler = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
SmsInfoData data = SmsInfoData.fromJson(json.decode(
... ... @@ -536,3 +538,14 @@ var smsManagerPageHandler = new Handler(
// return ChangeNotifierProvider<UploadImageProvider>(
// create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage());
});
///短信充值
var smsRechargePageHandler = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
SmsInfoData data = SmsInfoData.fromJson(json.decode(
FluroConvertUtils.fluroCnParamsDecode(params["smsInfoData"].first)));
return ChangeNotifierProvider<SmsRechargeModel>(
create: (_) => SmsRechargeModel(), child: SmsRechargePage(infoData: data));
// return ChangeNotifierProvider<UploadImageProvider>(
// create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage());
});
... ...
... ... @@ -49,6 +49,7 @@ class Routes {
static String store_type_fill_manage_page =
"/store_type_fill_manage_page"; //包间置满管理
static String sms_manager_page = "/sms_manager_page"; //短信充值
static String sms_recharge_page = "/sms_recharge_page"; //短信充值
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
... ... @@ -105,5 +106,6 @@ class Routes {
router.define(store_type_fill_manage_page,
handler: storeTypeFillManagePageHandler);
router.define(sms_manager_page, handler: smsManagerPageHandler);
router.define(sms_recharge_page, handler: smsRechargePageHandler);
}
}
... ...