Commit 0db2f4ec578b209ce1015c13c491f1fbd72aa602

Authored by wdn127929
1 parent d94136f2

短信购买UI第一页

@@ -34,6 +34,7 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { @@ -34,6 +34,7 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver {
34 MyModel myModel; 34 MyModel myModel;
35 ScrollController controller; 35 ScrollController controller;
36 Version _version; 36 Version _version;
  37 + SmsInfoData smsInfoData;
37 38
38 @override 39 @override
39 void initState() { 40 void initState() {
@@ -96,7 +97,8 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { @@ -96,7 +97,8 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver {
96 ///获取短信余量 97 ///获取短信余量
97 _getSmsInfo(context) async { 98 _getSmsInfo(context) async {
98 // myModel = Provider.of<MyModel>(context, listen: false); 99 // myModel = Provider.of<MyModel>(context, listen: false);
99 - await myModel.getSmsInfo(context); 100 + smsInfoData = await myModel.getSmsInfo(context);
  101 +
100 // setState(() { 102 // setState(() {
101 // if (smsInfoData != null) { 103 // if (smsInfoData != null) {
102 // smsInfo = smsInfoData?.lastNum; 104 // smsInfo = smsInfoData?.lastNum;
@@ -309,7 +311,9 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { @@ -309,7 +311,9 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver {
309 content: 311 content:
310 myModel.smsInfo.isNotEmpty ? '剩余${myModel.smsInfo}条' : '', 312 myModel.smsInfo.isNotEmpty ? '剩余${myModel.smsInfo}条' : '',
311 callback: () { 313 callback: () {
312 - Utils.goMiniProgramZm(context, "setting/sms"); 314 + // Utils.goMiniProgramZm(context, "setting/sms");
  315 + NavigatorUtil.goSmsManagePage(context,
  316 + smsInfoData: smsInfoData);
313 }, 317 },
314 ), 318 ),
315 MyDivider( 319 MyDivider(
@@ -323,7 +327,6 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { @@ -323,7 +327,6 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver {
323 callback: () { 327 callback: () {
324 // Utils.goMiniProgramZm(context, "roomtype/roomtype"); 328 // Utils.goMiniProgramZm(context, "roomtype/roomtype");
325 NavigatorUtil.goStoreTypeFillManagePage(context); 329 NavigatorUtil.goStoreTypeFillManagePage(context);
326 -  
327 }, 330 },
328 ), 331 ),
329 MyDivider( 332 MyDivider(
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/models/sms_info.dart';
  4 +import 'package:one_key/provider/my_model.dart';
  5 +import 'package:one_key/res/colors.dart';
  6 +import 'package:one_key/utils/event_bus.dart';
  7 +import 'package:one_key/utils/utils.dart';
  8 +import 'package:one_key/widgets/MyDivider.dart';
  9 +import 'package:one_key/widgets/h_empty_view.dart';
  10 +import 'package:one_key/widgets/round_button.dart';
  11 +import 'package:one_key/widgets/system_app_bar.dart';
  12 +import 'package:one_key/widgets/v_empty_view.dart';
  13 +import 'package:provider/provider.dart';
  14 +
  15 +class SmsManagerPage extends StatefulWidget {
  16 + final SmsInfoData infoData;
  17 + SmsManagerPage({Key key, this.infoData}) : super(key: key);
  18 +
  19 + @override
  20 + _SmsManagerPageState createState() => _SmsManagerPageState();
  21 +}
  22 +
  23 +class _SmsManagerPageState extends State<SmsManagerPage> {
  24 + @override
  25 + void initState() {
  26 + // TODO: implement initState
  27 + super.initState();
  28 + Utils.changeStatusColor(color: MyColours.color_199095);
  29 + }
  30 +
  31 + @override
  32 + Widget build(BuildContext context) {
  33 + return Scaffold(
  34 + appBar: SystemAppBar(
  35 + '短信管理',
  36 + bgColor: MyColours.color_199095,
  37 + needWhite: true,
  38 + onTap: () {
  39 + EventBus().emit('changeStatusColor');
  40 + Navigator.pop(context);
  41 + },
  42 + ),
  43 + body: NestedScrollView(
  44 + // controller: _scrollViewController,
  45 + headerSliverBuilder:
  46 + (BuildContext context, bool innerBoxIsScrolled) {
  47 + return <Widget>[
  48 + SliverAppBar(
  49 + pinned: false,
  50 + floating: false,
  51 + leading: Container(),
  52 + expandedHeight: ScreenUtil().setWidth(320 + 40),
  53 + flexibleSpace: FlexibleSpaceBar(
  54 + collapseMode: CollapseMode.pin,
  55 + background: Consumer<MyModel>(builder:
  56 + (BuildContext context, MyModel model, Widget child) {
  57 + return Container(
  58 + width: double.infinity,
  59 + height: ScreenUtil().setHeight(320 + 30),
  60 + color: MyColours.color_199095,
  61 + child: Padding(
  62 + padding:
  63 + EdgeInsets.only(left: ScreenUtil().setWidth(30)),
  64 + child: Column(
  65 + crossAxisAlignment: CrossAxisAlignment.center,
  66 + children: [
  67 + VEmptyView(80),
  68 + Container(
  69 + height: ScreenUtil().setWidth(40),
  70 + child: Text(
  71 + '短信余量',
  72 + style: TextStyle(
  73 + color: MyColours.color_ffffff,
  74 + fontSize: ScreenUtil().setSp(30)),
  75 + ),
  76 + ),
  77 + VEmptyView(10),
  78 + Row(
  79 + mainAxisAlignment: MainAxisAlignment.center,
  80 + crossAxisAlignment: CrossAxisAlignment.center,
  81 + children: [
  82 + Container(
  83 + height: ScreenUtil().setWidth(40),
  84 + child: Text(
  85 + widget.infoData.lastNum,
  86 + style: TextStyle(
  87 + color: MyColours.color_ffffff,
  88 + fontWeight: FontWeight.bold,
  89 + fontSize: ScreenUtil().setSp(36)),
  90 + )),
  91 + Container(
  92 + height: ScreenUtil().setWidth(30),
  93 + child: Text(
  94 + ' 条',
  95 + style: TextStyle(
  96 + color: MyColours.color_ffffff,
  97 + fontSize: ScreenUtil().setSp(30)),
  98 + ))
  99 + ],
  100 + ),
  101 + VEmptyView(80),
  102 + Stack(children: [
  103 + RoundButton(
  104 + text: '立即充值',
  105 + gradientStart: MyColours.color_ffffff,
  106 + gradientEnd: MyColours.color_ffffff,
  107 + borderColor: Color.fromRGBO(255, 255, 255, 0.2),
  108 + width: ScreenUtil().setWidth(225),
  109 + height: ScreenUtil().setWidth(80),
  110 + textColor: MyColours.color_199095,
  111 + radius: ScreenUtil().setWidth(10),
  112 + fontSize: 28,
  113 + isBold: true,
  114 + imgWidth: 26,
  115 + onPressed: () {
  116 + // NavigatorUtil.goBaseInfoPage(context);
  117 + },
  118 + ),
  119 + Positioned(
  120 + top: 0,
  121 + right: 0,
  122 + child: Container(
  123 + // padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(16),vertical: ScreenUtil().setWidth(4)),
  124 + padding: EdgeInsets.only(
  125 + left: ScreenUtil().setWidth(6)),
  126 + alignment: Alignment.center,
  127 + width: ScreenUtil().setWidth(34 * 2),
  128 + height: ScreenUtil().setWidth(30),
  129 + decoration: BoxDecoration(
  130 + // color: Colors.red,
  131 + image: DecorationImage(
  132 + image: ExactAssetImage(
  133 + Utils.getImgPath('sms_manager'),
  134 + ),
  135 + fit: BoxFit.cover,
  136 + ),
  137 + ),
  138 + child: Text(
  139 + '特惠',
  140 + style: TextStyle(
  141 + color: MyColours.color_fefefe,
  142 + fontSize: ScreenUtil().setSp(24)),
  143 + )),
  144 + )
  145 + ])
  146 + ],
  147 + )),
  148 + );
  149 + }),
  150 + ),
  151 + )
  152 + ];
  153 + }, body: Consumer<MyModel>(
  154 + builder: (BuildContext context, MyModel model, Widget child) {
  155 + return MediaQuery.removePadding(
  156 + context: context,
  157 + child: SingleChildScrollView(
  158 + child: Padding(
  159 + padding: EdgeInsets.symmetric(
  160 + horizontal: ScreenUtil().setWidth(40)),
  161 + child: Column(
  162 + crossAxisAlignment: CrossAxisAlignment.start,
  163 + children: <Widget>[
  164 + VEmptyView(60),
  165 + Row(
  166 + mainAxisAlignment: MainAxisAlignment.center,
  167 + children: [
  168 + MyDivider(ScreenUtil().setWidth(130),
  169 + ScreenUtil().setWidth(2)),
  170 + HEmptyView(40),
  171 + Text(
  172 + '常见问题说明',
  173 + style: TextStyle(
  174 + fontSize: ScreenUtil().setSp(28),
  175 + color: MyColours.color_333333),
  176 + ),
  177 + HEmptyView(40),
  178 + MyDivider(ScreenUtil().setWidth(130),
  179 + ScreenUtil().setWidth(2))
  180 + ],
  181 + ),
  182 + VEmptyView(40),
  183 + Text(
  184 + "1.短信计费",
  185 + style: TextStyle(
  186 + color: MyColours.color_333333,
  187 + fontSize: ScreenUtil().setSp(28),
  188 + fontWeight: FontWeight.bold),
  189 + ),
  190 + Container(
  191 + margin: EdgeInsets.only(
  192 + top: ScreenUtil().setWidth(20),
  193 + bottom: ScreenUtil().setWidth(20)),
  194 + child: Text(
  195 + "· 短信计费统一根据三大运营商标注计算;\n· 当短信内容字符数≤70,短信按照一条计费;\n· 当短信内容字符数>70个字符时,按照每70个字符为一条短信;",
  196 + style: TextStyle(
  197 + color: MyColours.color_333333,
  198 + fontSize: ScreenUtil().setSp(28),
  199 + ),
  200 + strutStyle: StrutStyle(
  201 + forceStrutHeight: true,
  202 + height: 1,
  203 + leading: 0.3),
  204 + ),
  205 + ),
  206 + MyDivider(
  207 + double.infinity, ScreenUtil().setWidth(1)),
  208 + VEmptyView(40),
  209 + Text(
  210 + "2.短信统计",
  211 + style: TextStyle(
  212 + color: MyColours.color_333333,
  213 + fontSize: ScreenUtil().setSp(28),
  214 + fontWeight: FontWeight.bold),
  215 + ),
  216 + Container(
  217 + margin: EdgeInsets.only(
  218 + top: ScreenUtil().setWidth(20),
  219 + bottom: ScreenUtil().setWidth(20)),
  220 + child: Text(
  221 + "· 短信统计只统计计费短信,与订单数量无关,一个订单可能会发送多条短信,则计费时按照多条短信计费;",
  222 + style: TextStyle(
  223 + color: MyColours.color_333333,
  224 + fontSize: ScreenUtil().setSp(28),
  225 + ),
  226 + strutStyle: StrutStyle(
  227 + forceStrutHeight: true,
  228 + height: 1,
  229 + leading: 0.3),
  230 + ),
  231 + ),
  232 + MyDivider(
  233 + double.infinity, ScreenUtil().setWidth(1)),
  234 + VEmptyView(40),
  235 + Text(
  236 + "3.充值说明",
  237 + style: TextStyle(
  238 + color: MyColours.color_333333,
  239 + fontSize: ScreenUtil().setSp(28),
  240 + fontWeight: FontWeight.bold),
  241 + ),
  242 + Container(
  243 + margin: EdgeInsets.only(
  244 + top: ScreenUtil().setWidth(20),
  245 + bottom: ScreenUtil().setWidth(20)),
  246 + child: Text(
  247 + "· 短信统一在订座商户小程序上进行充值,充值记录和详细使用情况统一在小程序上查看。",
  248 + style: TextStyle(
  249 + color: MyColours.color_333333,
  250 + fontSize: ScreenUtil().setSp(28),
  251 + ),
  252 + strutStyle: StrutStyle(
  253 + forceStrutHeight: true,
  254 + height: 1,
  255 + leading: 0.3),
  256 + ),
  257 + ),
  258 + ]))));
  259 + })));
  260 + }
  261 +}
@@ -3,6 +3,7 @@ import 'package:one_key/models/seller_table_class_entity.dart'; @@ -3,6 +3,7 @@ import 'package:one_key/models/seller_table_class_entity.dart';
3 import 'package:one_key/provider/store_detail_model.dart'; 3 import 'package:one_key/provider/store_detail_model.dart';
4 import 'package:one_key/provider/user_model.dart'; 4 import 'package:one_key/provider/user_model.dart';
5 import 'package:one_key/res/colors.dart'; 5 import 'package:one_key/res/colors.dart';
  6 +import 'package:one_key/utils/event_bus.dart';
6 import 'package:one_key/utils/utils.dart'; 7 import 'package:one_key/utils/utils.dart';
7 import 'package:one_key/widgets/h_empty_view.dart'; 8 import 'package:one_key/widgets/h_empty_view.dart';
8 import 'package:one_key/widgets/system_app_bar.dart'; 9 import 'package:one_key/widgets/system_app_bar.dart';
@@ -400,10 +401,14 @@ class StoreTypeFillManagePageState extends State<StoreTypeFillManagePage> { @@ -400,10 +401,14 @@ class StoreTypeFillManagePageState extends State<StoreTypeFillManagePage> {
400 appBar: SystemAppBar( 401 appBar: SystemAppBar(
401 userModel.user.sellername, 402 userModel.user.sellername,
402 onTap: () { 403 onTap: () {
  404 + EventBus().emit('changeStatusColor');
403 Navigator.pop(context); 405 Navigator.pop(context);
404 }, 406 },
405 ), 407 ),
406 - body: Consumer<StoreDetailModel>( 408 + body: WillPopScope(onWillPop: () async {
  409 + EventBus().emit('changeStatusColor');
  410 + return true;
  411 + }, child: Consumer<StoreDetailModel>(
407 builder: (context, model, child) { 412 builder: (context, model, child) {
408 return Container( 413 return Container(
409 width: double.infinity, 414 width: double.infinity,
@@ -843,7 +848,7 @@ class StoreTypeFillManagePageState extends State<StoreTypeFillManagePage> { @@ -843,7 +848,7 @@ class StoreTypeFillManagePageState extends State<StoreTypeFillManagePage> {
843 ], 848 ],
844 )); 849 ));
845 }, 850 },
846 - ), 851 + )),
847 ); 852 );
848 } 853 }
849 } 854 }
@@ -4,6 +4,7 @@ import 'package:one_key/models/coupon_model.dart'; @@ -4,6 +4,7 @@ import 'package:one_key/models/coupon_model.dart';
4 import 'package:one_key/models/integral_model.dart'; 4 import 'package:one_key/models/integral_model.dart';
5 import 'package:one_key/models/notebook.dart'; 5 import 'package:one_key/models/notebook.dart';
6 import 'package:one_key/models/notebook_detail.dart'; 6 import 'package:one_key/models/notebook_detail.dart';
  7 +import 'package:one_key/models/sms_info.dart';
7 import 'package:one_key/models/statics_model.dart'; 8 import 'package:one_key/models/statics_model.dart';
8 import 'package:one_key/models/table_list.dart'; 9 import 'package:one_key/models/table_list.dart';
9 import 'package:one_key/res/colors.dart'; 10 import 'package:one_key/res/colors.dart';
@@ -341,4 +342,12 @@ class NavigatorUtil { @@ -341,4 +342,12 @@ class NavigatorUtil {
341 return _navigateTo(context, "${Routes.store_type_fill_manage_page}", 342 return _navigateTo(context, "${Routes.store_type_fill_manage_page}",
342 replace: replace); 343 replace: replace);
343 } 344 }
  345 +
  346 + /// 短信充值
  347 + static Future<dynamic> goSmsManagePage(BuildContext context,
  348 + {replace = false, SmsInfoData smsInfoData}) {
  349 + return _navigateTo(context,
  350 + "${Routes.sms_manager_page}?smsInfoData=${FluroConvertUtils.object2string(smsInfoData)}",
  351 + replace: replace);
  352 + }
344 } 353 }
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; @@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
5 import 'package:one_key/models/coupon_model.dart'; 5 import 'package:one_key/models/coupon_model.dart';
6 import 'package:one_key/models/integral_model.dart'; 6 import 'package:one_key/models/integral_model.dart';
7 import 'package:one_key/models/notebook_detail.dart'; 7 import 'package:one_key/models/notebook_detail.dart';
  8 +import 'package:one_key/models/sms_info.dart';
8 import 'package:one_key/models/statics_model.dart'; 9 import 'package:one_key/models/statics_model.dart';
9 import 'package:one_key/models/table_list.dart'; 10 import 'package:one_key/models/table_list.dart';
10 import 'package:one_key/pages/coupon/coupon_detail_page.dart'; 11 import 'package:one_key/pages/coupon/coupon_detail_page.dart';
@@ -39,6 +40,7 @@ import 'package:one_key/pages/my/contant_page.dart'; @@ -39,6 +40,7 @@ import 'package:one_key/pages/my/contant_page.dart';
39 import 'package:one_key/pages/my/my_integral_page.dart'; 40 import 'package:one_key/pages/my/my_integral_page.dart';
40 import 'package:one_key/pages/my/receive_orders_time_set.dart'; 41 import 'package:one_key/pages/my/receive_orders_time_set.dart';
41 import 'package:one_key/pages/my/remark_manager_page.dart'; 42 import 'package:one_key/pages/my/remark_manager_page.dart';
  43 +import 'package:one_key/pages/my/sms_manager.dart';
42 import 'package:one_key/pages/my/store_type_fill_manage_page.dart'; 44 import 'package:one_key/pages/my/store_type_fill_manage_page.dart';
43 import 'package:one_key/pages/notebook/statistics_page.dart'; 45 import 'package:one_key/pages/notebook/statistics_page.dart';
44 import 'package:one_key/pages/notebook/statistics_sms_page.dart'; 46 import 'package:one_key/pages/notebook/statistics_sms_page.dart';
@@ -523,3 +525,14 @@ var storeTypeFillManagePageHandler = new Handler( @@ -523,3 +525,14 @@ var storeTypeFillManagePageHandler = new Handler(
523 // return ChangeNotifierProvider<UploadImageProvider>( 525 // return ChangeNotifierProvider<UploadImageProvider>(
524 // create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage()); 526 // create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage());
525 }); 527 });
  528 +
  529 +///短信充值
  530 +var smsManagerPageHandler = new Handler(
  531 + handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
  532 + SmsInfoData data = SmsInfoData.fromJson(json.decode(
  533 + FluroConvertUtils.fluroCnParamsDecode(params["smsInfoData"].first)));
  534 + return ChangeNotifierProvider<MyModel>(
  535 + create: (_) => MyModel(), child: SmsManagerPage(infoData: data));
  536 + // return ChangeNotifierProvider<UploadImageProvider>(
  537 + // create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage());
  538 +});
@@ -48,6 +48,7 @@ class Routes { @@ -48,6 +48,7 @@ class Routes {
48 static String statistics_sms_page = "/statistics_sms_page"; //统计页发短信 48 static String statistics_sms_page = "/statistics_sms_page"; //统计页发短信
49 static String store_type_fill_manage_page = 49 static String store_type_fill_manage_page =
50 "/store_type_fill_manage_page"; //包间置满管理 50 "/store_type_fill_manage_page"; //包间置满管理
  51 + static String sms_manager_page = "/sms_manager_page"; //短信充值
51 52
52 static void configureRoutes(FluroRouter router) { 53 static void configureRoutes(FluroRouter router) {
53 router.notFoundHandler = new Handler( 54 router.notFoundHandler = new Handler(
@@ -103,5 +104,6 @@ class Routes { @@ -103,5 +104,6 @@ class Routes {
103 router.define(statistics_sms_page, handler: statisticsSmsPageHandler); 104 router.define(statistics_sms_page, handler: statisticsSmsPageHandler);
104 router.define(store_type_fill_manage_page, 105 router.define(store_type_fill_manage_page,
105 handler: storeTypeFillManagePageHandler); 106 handler: storeTypeFillManagePageHandler);
  107 + router.define(sms_manager_page, handler: smsManagerPageHandler);
106 } 108 }
107 } 109 }