if_need_create_store.dart 18.3 KB
import 'dart:convert';

import 'package:cached_network_image/cached_network_image.dart';
import 'package:dotted_border/dotted_border.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/app.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/check_seller_acc_model.dart';
import 'package:one_key/models/user.dart';
import 'package:one_key/pages/create_store/create_store.dart';
import 'package:one_key/pages/login/if_need_create_store_item.dart';
import 'package:one_key/provider/base_info_provider.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/other_login_provider.dart';
import 'package:one_key/provider/user_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/page_exception.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:tpns_flutter_plugin/tpns_flutter_plugin.dart';

class IfNeedCreateStore extends StatefulWidget {
  final List<CheckSellerAccSunModel> data;
  final bool changeStatus;
  IfNeedCreateStore({Key key, this.data, this.changeStatus = false})
      : super(key: key);

  @override
  _IfNeedCreateStoreState createState() => _IfNeedCreateStoreState();
}

class _IfNeedCreateStoreState extends State<IfNeedCreateStore>
    with WidgetsBindingObserver {
  ScrollController _controller = ScrollController();
  OtherLoginProvider otherLoginProvider;
  BaseIndoProvider _baseIndoProvider;
  String phone = ''; //客户经理个人资料电话
  String name = ''; //客户经理个人资料姓名

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _checkSellerAcc();
    });
    bus.on("refresh_store_list", (arg) {
      _checkSellerAcc();
    });
  }

  @override
  void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this); //销毁观察者
    EventBus().emit('refresh_store_list');
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    print(state.toString());
    switch (state) {
      case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。
        break;
      case AppLifecycleState.resumed: // 应用程序可见,前台
        print('11111');
        _checkSellerAcc();
        break;
      case AppLifecycleState.paused: // 应用程序不可见,后台
        print('eeeee ');
        break;
      case AppLifecycleState.detached:
        print('detached');
        break;

      default:
        break;
    }
  }

  _getCustomerActivityBaseinfo(String sellerid, String openid) async {
    Map<String, String> params = {
      'sellerid': sellerid,
      "uid": openid,
    };
    bool success = await _baseIndoProvider
        .getCustomerActivityBaseinfo(context, params, isShowLoading: false);
    if (success) {
      name = _baseIndoProvider.baseInfoSunModel.name != null
          ? _baseIndoProvider.baseInfoSunModel.name
          : '';
      phone = _baseIndoProvider.baseInfoSunModel.phone != null
          ? _baseIndoProvider.baseInfoSunModel.phone
          : '';
    } else {}
  }

  ///获取是否有店
  _checkSellerAcc({showLoading = false}) async {
    CreateStoreModel createStoreModel =
        Provider.of<CreateStoreModel>(context, listen: false);
    Map<String, String> params = {
      // "phone": createStoreModel.storeInfo.phone,
      // "phone": '',
      "unionid": App.sp.getString("unionid"),
    };
    await otherLoginProvider.checkSellerAcc(context, params,
        showLoading: showLoading);
  }

  ///点击某个店铺
  _clickStore(context, CheckSellerAccSunModel sunModel) async {
    Map<String, dynamic> seller = sunModel.toJson();

    await _getCustomerActivityBaseinfo(seller['id'], seller['uid']);
    //判断进入个人信息还是直接进入主页
    if (name == '' || phone == '') {
      //姓名或者电话有一个为空时,进入个人资料填写页面
      NavigatorUtil.goBaseInfoPage(context, FromPage.FromPageIfNeedCreateStore,
          sunModel: sunModel);
    } else {
      _loginStore(context, sunModel);
    }
  }

  ///进入某个店铺
  _loginStore(context, CheckSellerAccSunModel sunModel) {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    App.sp.setBool("accountLogin", false);
    Map<String, dynamic> seller = sunModel.toJson();
    Map<String, dynamic> userMap = {
      "openid": seller['uid'],
      "account": seller['account'],
      "role_name": seller['role_name'],
      "sellerid": seller['id'],
      "sellercode": seller['seller_code'],
      "sellerimage": seller['seller_image'],
      "sellername": seller['sellername'],
      "sellerphone": seller['seller_tel'],
      "sellerAddr": '',
      "scatter": 0,
      "room": 0,
      "cassette": 0,
      "morning": "",
      "noon": "",
      "night": "",
    };

    userModel.saveUserInfo(User.fromJson(userMap));
    userModel.getSellerInfo(
        context,
        {"seller_id": seller['id'], "seller_openid": seller['openid']},
        userMap);
  }

  @override
  Widget build(BuildContext context) {
    otherLoginProvider = Provider.of<OtherLoginProvider>(context, listen: true);
    _baseIndoProvider = Provider.of<BaseIndoProvider>(context, listen: true);
    return WillPopScope(
        onWillPop: () async {
          if (widget.changeStatus) {
            EventBus().emit('changeStatusColor');
          }

          return true;
        },
        child: Scaffold(
            backgroundColor: Colors.white,
            appBar: SystemAppBar('选择店铺',
                // leftTitle: '上一步',
                onTap: () {
                  if (widget.changeStatus) {
                    EventBus().emit('changeStatusColor');
                  }
                  Navigator.of(context).pop();
                },
                rightImgName: 'add_check_store.png',
                onTapRight: () {
                  if (otherLoginProvider.pageState != PageState.Success) {
                    // if (!App.sp.containsKey('openid') ||
                    //     App.sp.get("openid") == null ||
                    //     App.sp.get("openid") == '') {
                    //跳转小程序
                    Utils.goMiniProgramCreatePage(context);
                    // } else {
                    //   //跳转至新建店铺流程
                    //   NavigatorUtil.goEnterStoreNamePage(context);
                    // }
                  } else {
                    // if (!App.sp.containsKey('openid') ||
                    //     App.sp.get("openid") == null ||
                    //     App.sp.get("openid") == '') {
                    //   //跳转小程序
                    //   Utils.goMiniProgramCreatePage(context);
                    // } else {
                    //跳转至新建店铺流程
                    NavigatorUtil.goEnterStoreNamePage(context);
                    // }
                  }
                }),
            body: Container(
                // margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(40)),
                padding:
                    EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(48)),
                child:
                    Consumer<OtherLoginProvider>(builder: (context, model, _) {
                  if (model.pageState != PageState.Success) {
                    // if (model.pageState == PageState.Empty) {
                    //   return Container(
                    //       width: double.infinity,
                    //       padding: EdgeInsets.all(ScreenUtil().setWidth(40)),
                    //       child: Column(
                    //           crossAxisAlignment: CrossAxisAlignment.center,
                    //           // mainAxisAlignment: MainAxisAlignment.center,
                    //           children: [
                    //             VEmptyView(80),
                    //             Image.asset(
                    //               Utils.getImgPath('not_member'),
                    //               width: ScreenUtil().setWidth(120),
                    //               height: ScreenUtil().setWidth(120),
                    //             ),
                    //             VEmptyView(60),
                    //             Text(
                    //               '您还没有绑定任何店铺',
                    //               style: TextStyle(
                    //                   fontSize: ScreenUtil().setSp(32),
                    //                   color: MyColours.color_333333,
                    //                   fontWeight: FontWeight.bold),
                    //             ),
                    //             VEmptyView(172),
                    //             InkWell(
                    //                 onTap: () {
                    //                   // if (!App.sp.containsKey('openid') ||
                    //                   //     App.sp.get("openid") == null ||
                    //                   //     App.sp.get("openid") == '') {
                    //                   //跳转小程序
                    //                   Utils.goMiniProgramCreatePage(context);
                    //                   // } else {
                    //                   //   //跳转至新建店铺流程
                    //                   //   NavigatorUtil.goEnterStoreNamePage(context);
                    //                   // }
                    //                 },
                    //                 child: Container(
                    //                   width: double.infinity,
                    //                   padding: EdgeInsets.symmetric(
                    //                       horizontal: ScreenUtil().setWidth(40),
                    //                       vertical: ScreenUtil().setWidth(18)),
                    //                   decoration: BoxDecoration(
                    //                       color: MyColours.color_24A4A8,
                    //                       borderRadius: BorderRadius.circular(
                    //                           ScreenUtil().setWidth(10))),
                    //                   child: Text(
                    //                     '创建店铺',
                    //                     textAlign: TextAlign.center,
                    //                     maxLines: 1,
                    //                     overflow: TextOverflow.ellipsis,
                    //                     style: TextStyle(
                    //                         color: MyColours.color_ffffff,
                    //                         fontSize: ScreenUtil().setSp(34)),
                    //                   ),
                    //                 )),
                    //           ]));
                    // }
                    return ExceptionPage(
                      pageState: model.pageState,
                      callback: () {
                        _checkSellerAcc(showLoading: true);
                      },
                      emptyMsg: "您还没有绑定任何店铺",
                      emptyImg: "empty_search",
                      showMsg: "加载中,请稍后...",
                    );
                  } else {
                    return
                        // VEmptyView(40),
                        // Text(
                        //   '请选择您要进入的店铺',
                        //   style: TextStyle(
                        //       fontSize: ScreenUtil().setWidth(32),
                        //       color: MyColours.color_333333,
                        //       fontWeight: FontWeight.bold),
                        // ),
                        // VEmptyView(100),
                        ListView.builder(
                            padding: EdgeInsets.only(
                                top: ScreenUtil().setWidth(50),
                                bottom: ScreenUtil().setWidth(20)),
                            // controller: widget.scrollController,
                            // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
                            shrinkWrap: true,
                            itemCount: model.sellerList.length,
                            // cacheExtent: ScreenUtil().setWidth(197 * 2),
                            //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
                            // gridDelegate:
                            //     SliverGridDelegateWithFixedCrossAxisCount(
                            //         //横轴元素个数
                            //         crossAxisCount: 2,
                            //         //纵轴间距
                            //         mainAxisSpacing:
                            //             ScreenUtil().setWidth(50),
                            //         //横轴间距
                            //         crossAxisSpacing:
                            //             ScreenUtil().setWidth(50),
                            //         //子组件宽高长度比例
                            //         childAspectRatio: 140 / 197),
                            itemBuilder: (BuildContext context, int index) {
                              // if (index == model.sellerList.length) {
                              //   return InkWell(
                              //       onTap: () {
                              //         // if (!App.sp.containsKey('openid') ||
                              //         //     App.sp.get("openid") == null ||
                              //         //     App.sp.get("openid") == '') {
                              //         //   //跳转小程序
                              //         //   Utils.goMiniProgramCreatePage(context);
                              //         // } else {
                              //         //跳转至新建店铺流程
                              //         NavigatorUtil.goEnterStoreNamePage(
                              //             context);
                              //         // }
                              //       },
                              //       child: DottedBorder(
                              //         dashPattern: [5, 5, 5, 5],
                              //         borderType: BorderType.RRect,
                              //         radius: Radius.circular(
                              //             ScreenUtil().setWidth(10)),
                              //         // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
                              //         color: MyColours.color_cccccc,
                              //         strokeWidth: ScreenUtil().setWidth(2),
                              //         child: ClipRRect(
                              //           borderRadius: BorderRadius.all(
                              //               Radius.circular(12)),
                              //           child: Container(
                              //             height: ScreenUtil()
                              //                 .setWidth(197 * 2),
                              //             width: ScreenUtil()
                              //                 .setWidth(140 * 2),
                              //             child: Column(
                              //               mainAxisAlignment:
                              //                   MainAxisAlignment.center,
                              //               children: [
                              //                 Image.asset(
                              //                     Utils.getImgPath(
                              //                         'add_store'),
                              //                     width: ScreenUtil()
                              //                         .setWidth(32)),
                              //                 VEmptyView(10),
                              //                 Text(
                              //                   '创建店铺',
                              //                   style: TextStyle(
                              //                       color: MyColours
                              //                           .color_999999,
                              //                       fontSize: ScreenUtil()
                              //                           .setSp(24)),
                              //                 )
                              //               ],
                              //             ),
                              //           ),
                              //         ),
                              //       ));
                              // }
                              return InkWell(
                                onTap: () async {
                                  if (widget.changeStatus) {
                                    UserModel userModel =
                                        Provider.of<UserModel>(context,
                                            listen: false);
                                    bool success = await userModel.loginOutOnly(
                                        context, {
                                      "seller_code": userModel.user.sellercode,
                                      "account": userModel.user.account
                                    });
                                    if (success) {
                                      _clickStore(
                                          context, model.sellerList[index]);
                                    }
                                  } else {
                                    _clickStore(
                                        context, model.sellerList[index]);
                                  }
                                },
                                child: IfNeedCreateStoreItem(
                                    model: model.sellerList[index]),
                              );
                            });
                    //  VEmptyView(40),

                  }
                }))));
  }
}