statistics_provider.dart 3.73 KB
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/statics_model.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 StatisticsProvider with ChangeNotifier {
  PageState pageState = PageState.Statics;
  List<StaticsSunModel> dataStatics = [];
  StaticsSunModel tableHeaderModel;
  String dateS = "开始日期"; //开始时间
  String dateE = "结束日期"; //结束时间
  DateTime datetimeS; //开始时间
  DateTime datetimeE; //结束时间
  DateTime dateNow; //当前日期
  bool showWidget = true;

  int currentIndex = 0;
  TextEditingController controller = TextEditingController();
  String sortstr = '排序';

  StatisticsProvider() {
    tableHeaderModel = StaticsSunModel(
      '顾客姓名',
      '电话',
      '',
      '',
      '',
    );
    tableHeaderModel.select = false;
    tableHeaderModel.numstr = '序号';
    tableHeaderModel.sortstr = '预订次数';
    datetimeS = DateTime.now();
    datetimeE = datetimeS.add(Duration(days: 1));
    dateNow = datetimeS;
    controller.text = '50';
  }

  ///全选按钮方法
  allSel() {
    if (tableHeaderModel.select) {
      for (StaticsSunModel item in dataStatics) {
        item.select = false;
      }
    } else {
      for (StaticsSunModel item in dataStatics) {
        item.select = true;
      }
    }
    needAllSel();
  }

  ///清除
  clear() {
    pageState = PageState.Statics;
    dateS = "开始日期"; //开始时间
    dateE = "结束日期"; //结束时间
    sortstr = '排序';
    currentIndex = 0;
    controller.text = '50';
    datetimeS = DateTime.now();
    datetimeE = datetimeS.add(Duration(days: 1));
    showWidget = true;
    notifyListeners();
  }

  ///改变全选按钮的状态
  needAllSel() {
    bool _needAllSel = dataStatics.every((element) => element.select == true);
    if (_needAllSel) {
      tableHeaderModel.select = true;
    } else {
      tableHeaderModel.select = false;
    }
    notifyListeners();
  }

  ///收否有选中的按钮
  selectAny() {
    bool selectAny = dataStatics.any((element) => element.select == true);
    if (selectAny) {
      return true;
    }
    return false;
  }

  //获取统计列表
  Future getStatisticsList(BuildContext context, Map<String, String> params,
      {needLoading = true}) async {
    if (needLoading) {
      pageState = PageState.Loading;
      notifyListeners();
    }
    pageState = PageState.Loading;
    notifyListeners();
    BaseResp<List> baseResp = await DioUtil()
        .request<List>(context, Method.get, HttpUrl.get_statistics_list,
            data: params, showLoading: false)
        .catchError((error) {
      print(error.toString());
      if (error is MyError) {
        switch (error.type) {
          case 1:
            pageState = PageState.ConnectivityError;
            break;
          case 2:
            pageState = PageState.ConnectivityTimeOut;
            break;
          default:
            pageState = PageState.ConnectivityError;
            break;
        }
      }
      notifyListeners();
    });
    if (baseResp == null) return null;

    if (baseResp.code == Constant.status_success) {
      dataStatics = StaticsModel.fromJson(baseResp.responseData).data;
      if (dataStatics.isEmpty) {
        pageState = PageState.Empty;
        notifyListeners();
      } else {
        pageState = PageState.Success;
      }
    } else {
      pageState = PageState.ConnectivityError;
      notifyListeners();
      Utils.showToast(baseResp.msg ?? "");
    }

    return dataStatics;
  }
}