my_page.dart 14.1 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluwx/fluwx.dart';
import 'package:one_key/models/sms_info.dart';
import 'package:one_key/provider/my_model.dart';
import 'package:one_key/provider/update_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/app_bar.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/my_item.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';

import '../../app.dart';

class MyPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MyPageState();
  }
}

class MyPageState extends State<MyPage> with WidgetsBindingObserver {
  String cur_version = "";
  bool newVersion = false;
  MyModel myModel;
  ScrollController controller;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    controller = ScrollController(initialScrollOffset: 0.0);
    WidgetsBinding.instance.addObserver(this);
    Utils.getCurrVersion().then((version) {
      setState(() {
        cur_version = "v" + version;
      });
    });
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      ///获取短信余量
      _getSmsInfo(context);
    });
    EventBus().on('changeStatusColor', (arg) {
      Utils.changeStatusColor(color: Colors.transparent);
    });
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    EventBus().off('changeStatusColor');
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) async {
    // TODO: implement didChangeAppLifecycleState
    super.didChangeAppLifecycleState(state);
    switch (state) {
      case AppLifecycleState.resumed: //应用前台可见
        _getSmsInfo(context);
        break;
      case AppLifecycleState.inactive:
        print('inactive');
        break;
      case AppLifecycleState.paused:
        print('paused');
        break;
      case AppLifecycleState.detached:
        print('detached');
        break;

      default:
        break;
    }
  }

  ///获取短信余量
  _getSmsInfo(context) async {
    myModel = Provider.of<MyModel>(context, listen: false);
    await myModel.getSmsInfo(context);
    // setState(() {
    //   if (smsInfoData != null) {
    //     smsInfo = smsInfoData?.lastNum;
    //   }
    // });
  }

  //检查版本更新
  checkUpdate() {
    UpdateModel updateModel = new UpdateModel();
    updateModel.checkUpdate(context);
  }

  @override
  Widget build(BuildContext context) {
    myModel = Provider.of<MyModel>(context, listen: true);
    return Scaffold(
      appBar: AppBar(
          backgroundColor: MyColours.color_199095, //把appbar的背景色改成透明
          elevation: 0, //appbar的阴影
          centerTitle: true, // 标题居中
          title: Text(
            '我的',
            style: TextStyle(
                color: MyColours.color_fefefe,
                fontSize: ScreenUtil().setSp(34),
                fontWeight: FontWeight.normal,
                decoration: TextDecoration.none),
          )),
      body: NestedScrollView(
          // controller: _scrollViewController,
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
        return <Widget>[
          SliverAppBar(
            pinned: false,
            floating: false,
            expandedHeight: ScreenUtil().setWidth(200),
            flexibleSpace: FlexibleSpaceBar(
              collapseMode: CollapseMode.pin,
              background: Consumer<UserModel>(builder:
                  (BuildContext context, UserModel model, Widget child) {
                return Stack(
                  children: [
                    Container(
                      width: double.infinity,
                      height: ScreenUtil().setHeight(200),
                      alignment: Alignment.centerLeft,
                      color: MyColours.color_199095,
                    ),
                    Padding(
                        padding:
                            EdgeInsets.only(left: ScreenUtil().setWidth(40)),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            VEmptyView(38),
                            Text(
                              model.user.sellername,
                              style: TextStyle(
                                  color: MyColours.color_ffffff,
                                  fontSize: ScreenUtil().setSp(36)),
                            ),
                            VEmptyView(38),
                            Text(
                              model.user.account +
                                  "  |  " +
                                  model.user.role_name,
                              style: TextStyle(
                                  color: MyColours.color_ffffff,
                                  fontSize: ScreenUtil().setSp(30)),
                            ),
                          ],
                        ))
                  ],
                );
              }),
            ),
          )
        ];
      }, body: Consumer<UserModel>(
              builder: (BuildContext context, UserModel model, Widget child) {
        return MediaQuery.removePadding(
            context: context,
            child: SingleChildScrollView(
                child: Column(
              children: <Widget>[
                // Stack(
                //   children: [
                //     Container(
                //       width: double.infinity,
                //       height: ScreenUtil().setHeight(200),
                //       alignment: Alignment.centerLeft,
                //       color: MyColours.color_199095,
                //     ),
                //     Padding(
                //         padding:
                //             EdgeInsets.only(left: ScreenUtil().setWidth(40)),
                //         child: Column(
                //           crossAxisAlignment: CrossAxisAlignment.start,
                //           children: [
                //             VEmptyView(38),
                //             Text(
                //               model.user.sellername,
                //               style: TextStyle(
                //                   color: MyColours.color_ffffff,
                //                   fontSize: ScreenUtil().setSp(36)),
                //             ),
                //             VEmptyView(38),
                //             Text(
                //               model.user.account +
                //                   "  |  " +
                //                   model.user.role_name,
                //               style: TextStyle(
                //                   color: MyColours.color_ffffff,
                //                   fontSize: ScreenUtil().setSp(30)),
                //             ),
                //           ],
                //         ))
                //   ],
                // ),
                VEmptyView(40),
                MyItem(
                  title: "短信管理",
                  content:
                      myModel.smsInfo.isNotEmpty ? '剩余${myModel.smsInfo}条' : '',
                  callback: () {
                    Utils.goMiniProgramZm(context, "setting/sms");
                  },
                ),
                MyDivider(
                  double.infinity,
                  ScreenUtil().setHeight(1),
                  color: MyColours.color_f3f3f3,
                ),
                MyItem(
                  title: "包间类型置满管理",
                  content: "",
                  callback: () {
                    Utils.goMiniProgramZm(context, "roomtype/roomtype");
                  },
                ),
                MyDivider(
                  double.infinity,
                  ScreenUtil().setHeight(1),
                  color: MyColours.color_f3f3f3,
                ),
                MyItem(
                  title: "可订时段管理",
                  content: "",
                  callback: () {
                    NavigatorUtil.goBookTimeSetPage(context);
                  },
                ),
                MyDivider(
                  double.infinity,
                  ScreenUtil().setHeight(1),
                  color: MyColours.color_f3f3f3,
                ),
                MyItem(
                  title: "接单时间管理",
                  content: "",
                  callback: () {
                    NavigatorUtil.goReceiveOrdersTimeSetPage(context);
                  },
                ),
                MyDivider(
                  double.infinity,
                  ScreenUtil().setHeight(1),
                  color: MyColours.color_f3f3f3,
                ),
                MyItem(
                  title: "常用备注管理",
                  content: "",
                  callback: () {
                    NavigatorUtil.goRemarkManagerPage(context);
                  },
                ),
                VEmptyView(40),
                MyItem(
                  title: "联系客服",
                  content: "09:00~21:00",
                  callback: () {
                    Utils.goPhone("400-000-9690");
                  },
                ),
                MyDivider(
                  double.infinity,
                  ScreenUtil().setHeight(1),
                  color: MyColours.color_f3f3f3,
                ),
                MyItem(
                  title: "帮助与反馈",
                  content: "",
                  callback: () {
                    Utils.goHelp(context);
                  },
                ),
                MyDivider(double.infinity, ScreenUtil().setHeight(1),
                    color: MyColours.color_f3f3f3),
                GestureDetector(
                  onTap: checkUpdate,
                  child: Container(
                    width: double.infinity,
                    height: ScreenUtil().setHeight(122),
                    color: MyColours.color_ffffff,
                    padding: EdgeInsets.symmetric(
                        horizontal: ScreenUtil().setWidth(40)),
                    alignment: Alignment.center,
                    child: Row(
                      children: <Widget>[
                        Text(
                          "版本更新",
                          style: TextStyle(
                              fontSize: ScreenUtil().setSp(30),
                              color: MyColours.color_353535),
                        ),
                        Spacer(),
                        newVersion
                            ? Container(
                                width: ScreenUtil().setWidth(120),
                                height: ScreenUtil().setWidth(34),
                                decoration: BoxDecoration(
                                  color: MyColours.color_E14553,
                                  borderRadius: BorderRadius.all(
                                      Radius.circular(
                                          ScreenUtil().setWidth(6))),
                                ),
                                child: Center(
                                  child: Text(
                                    "发现新版本",
                                    style: TextStyle(
                                        fontSize: ScreenUtil().setSp(24),
                                        color: MyColours.color_ffffff),
                                  ),
                                ),
                              )
                            : Text(
                                cur_version,
                                style: TextStyle(
                                    fontSize: ScreenUtil().setSp(28),
                                    color: MyColours.color_666666),
                              ),
                        HEmptyView(20),
                        Image.asset(
                          "assets/arr_right_gray.png",
                          width: ScreenUtil().setWidth(14),
                          height: ScreenUtil().setWidth(22),
                        )
                      ],
                    ),
                  ),
                ),
                MyDivider(
                  double.infinity,
                  ScreenUtil().setHeight(1),
                  color: MyColours.color_f3f3f3,
                ),
                VEmptyView(40),
                Consumer<UserModel>(
                  builder:
                      (BuildContext context, UserModel model, Widget child) {
                    return GestureDetector(
                      onTap: () {
                        model.showLoginOutDialog(context);
                      },
                      child: Container(
                        height: ScreenUtil().setHeight(122),
                        color: MyColours.color_ffffff,
                        child: Center(
                          child: Row(
                            mainAxisSize: MainAxisSize.min,
                            crossAxisAlignment: CrossAxisAlignment.center,
                            children: <Widget>[
                              Image.asset(
                                "assets/icon_exist.png",
                                width: ScreenUtil().setWidth(30),
                                height: ScreenUtil().setWidth(30),
                              ),
                              HEmptyView(18),
                              Text("退出登录",
                                  style: TextStyle(
                                    color: MyColours.color_199095,
                                    fontSize: ScreenUtil().setSp(34),
                                  ))
                            ],
                          ),
                        ),
                      ),
                    );
                  },
                )
              ],
            )));
      })),
    );
  }
}