statistics_provider.dart 4.08 KB
import 'dart:async';

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 = [];
  late StaticsSunModel tableHeaderModel;
  String dateS = "开始日期"; //开始时间
  String dateE = "结束日期"; //结束时间
  DateTime? datetimeS; //开始时间
  DateTime? datetimeE; //结束时间
  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));
    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 = null;
    datetimeE = null;
    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;
  }

  Map<String, List> seletNum() {
    List selectStatics = [];
    for (StaticsSunModel item in dataStatics!) {
      if (item.select!) {
        selectStatics.add('dffdfdf');
      }
    }
    Map<String, List> map = {};
    map['selectStatics'] = selectStatics;
    return map;
  }

  //获取统计列表
  Future getStatisticsList(BuildContext context, Map<String, String?> params,
      {needLoading = true}) async {
    if (needLoading) {
      pageState = PageState.Loading;
      notifyListeners();
    }
    pageState = PageState.Loading;
    notifyListeners();
    try {
      BaseResp<List?> baseResp = await DioUtil().request<List>(
          context, Method.post, HttpUrl.get_statistics_list,
          data: params, showLoading: false);
      if (baseResp == null) return null;

      if (baseResp.code == Constant.status_success) {
        dataStatics =
            StaticsModel.fromJson(baseResp.responseData as Map<String, dynamic>)
                .data!
                .cast<StaticsSunModel>();
        if (dataStatics!.isEmpty) {
          pageState = PageState.Empty;
          notifyListeners();
        } else {
          pageState = PageState.Success;
        }
      } else {
        pageState = PageState.ConnectivityError;
        notifyListeners();
        Utils.showToast(baseResp.msg ?? "");
      }

      return dataStatics;
    } catch (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();
    }
  }
}