if_need_create_store.dart 11.6 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/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/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/utils/navigator_util.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';

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

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

class _IfNeedCreateStoreState extends State<IfNeedCreateStore> {
  ScrollController _controller = ScrollController();
  OtherLoginProvider otherLoginProvider;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _checkSellerAcc();
    });
  }

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

  ///进入某个店铺
  _loginStore(context, CheckSellerAccSunModel sunModel) {
    UserModel userModel = Provider.of<UserModel>(context, listen: 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'],
      "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);
    return Scaffold(
        backgroundColor: Colors.white,
        appBar: SystemAppBar(
          '',
          // leftTitle: '上一步',
          onTap: () {
            Navigator.pop(context);
          },
        ),
        body: Container(
            // margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(40)),
            padding:
                EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(70)),
            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: () {
                                  //跳转至新建店铺流程
                                  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 Column(
                  children: [
                    VEmptyView(40),
                    Text(
                      '请选择您要进入的店铺',
                      style: TextStyle(
                          fontSize: ScreenUtil().setWidth(32),
                          color: MyColours.color_333333,
                          fontWeight: FontWeight.bold),
                    ),
                    VEmptyView(100),
                    Expanded(
                        child: GridView.builder(
                            padding: EdgeInsets.only(
                                bottom: ScreenUtil().setWidth(50)),
                            // controller: widget.scrollController,
                            // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
                            shrinkWrap: true,
                            itemCount: model.sellerList.length + 1,
                            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: () {
                                      //跳转至新建店铺流程
                                      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: () {
                                  _loginStore(context, model.sellerList[index]);
                                },
                                child: IfNeedCreateStoreItem(
                                    model: model.sellerList[index]),
                              );
                            })),
                    //  VEmptyView(40),
                  ],
                );
              }
            })));
  }
}