statistics_page.dart 11.8 KB
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:video_compress/video_compress.dart';

typedef ClickCallback = void Function(String value);
enum TimeType { TimeTypeStart, TimeTypeEnd, TimeTypeDefalt }

class StatisticsPage extends StatefulWidget {
  StatisticsPage({Key key}) : super(key: key);

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

class _StatisticsPageState extends State<StatisticsPage> {
  String dateS = "开始日期"; //开始时间
  String dateE = "结束日期"; //结束时间
  DateTime datetimeS; //开始时间
  DateTime datetimeE; //结束时间
  DateTime dateNow; //当前日期
  bool showWidget = false;
  List<String> selectList;
  int currentIndex = 0;
  TextEditingController controller = TextEditingController();

  @override
  void initState() {
    super.initState();

    datetimeS = DateTime.now();
    datetimeE = datetimeS.add(Duration(days: 1));
    // dateS = DateUtil.formatDate(datetimeS, format: DateFormats.y_mo_d);
    // dateE = DateUtil.formatDate(datetimeE, format: DateFormats.y_mo_d);
    dateNow = datetimeS;
    selectList = ['预订次数多到少', '消费总金额高到低', '人均高到低'];
    controller.text = '50';
  }

  ///筛选条件
  Widget _menuWidget(DateTime date) {
    return Container(
      padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(26)),
      height: ScreenUtil().setWidth(100),
      child: Row(
        children: [
          GestureDetector(
            onTap: () {
              DialogUtil.showCalendarDialog(context, date).then((day) {
                if (day != null) {}
              });
            },
            child: Container(
              child: Text(
                dateS,
                style: TextStyle(
                    color: MyColours.color_199095,
                    fontSize: ScreenUtil().setSp(26)),
              ),
            ),
          ),
        ],
      ),
    );
  }

  _buttonChoose(String title, ClickCallback callback,
      {TimeType timeType = TimeType.TimeTypeDefalt}) {
    return InkWell(
        onTap: () {
          callback(title);
        },
        child: Container(
            padding: EdgeInsets.symmetric(
                horizontal: ScreenUtil().setWidth(10),
                vertical: ScreenUtil().setWidth(6)),
            height: ScreenUtil().setWidth(48),
            decoration: BoxDecoration(
                border: Border.all(
                    width: ScreenUtil().setWidth(2),
                    color: MyColours.color_199095),
                borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
            child: Row(
              children: [
                Text(
                  title,
                  style: TextStyle(
                      color: title == '开始日期' || title == '结束日期' || title == '排序'
                          ? MyColours.color_999999
                          : MyColours.color_199095,
                      fontSize: ScreenUtil().setWidth(26)),
                ),
                timeType != TimeType.TimeTypeDefalt
                    ? SizedBox()
                    : HEmptyView(10),
                timeType != TimeType.TimeTypeDefalt
                    ? SizedBox()
                    : Image.asset(
                        Utils.getImgPath('enter_order_arrow'),
                        width: ScreenUtil().setWidth(20),
                        height: ScreenUtil().setWidth(10),
                      )
              ],
            )));
  }

  _selectWidget(List<String> data, CustomCallBack onTap) {
    return Container(
        decoration: BoxDecoration(
            color: MyColours.color_ffffff,
            borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
            border: Border.all(
                color: MyColours.color_cccccc,
                width: ScreenUtil().setWidth(2))),
        width: ScreenUtil().setWidth(132 * 2),
        constraints: BoxConstraints(
          maxHeight: ScreenUtil().setWidth(104 * 2),
        ),
        child: ListView.builder(
            padding:
                EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20)),
            itemCount: data.length,
            itemBuilder: (context, index) {
              return InkWell(
                onTap: () {
                  onTap(index);
                },
                child: Container(
                  padding:
                      EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(20)),
                  decoration: BoxDecoration(
                      border: Border(
                          bottom: BorderSide(
                              color: MyColours.color_efefef,
                              width: data.length - 1 == index
                                  ? 0
                                  : ScreenUtil().setWidth(2)))),
                  child: Text(data[index],
                      style: TextStyle(
                          color: MyColours.color_199095,
                          fontWeight: FontWeight.bold,
                          fontSize: ScreenUtil().setSp(28))),
                ),
              );
            }));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: MyColours.color_ffffff,
      appBar: SystemAppBar(
        '统计列表',
        rightImgName: '清空',
        onTapRight: () {
          //
        },
        onTap: () {
          Navigator.pop(context);
        },
      ),
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Padding(
              padding:
                  EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)),
              child: Container(
                height: ScreenUtil().setWidth(100),
                child: Row(
                  children: [
                    _buttonChoose(dateS, (value) {
                      DialogUtil.showCalendarDialog(context, datetimeS)
                          .then((day) {
                        if (day != null) {
                          setState(() {
                            datetimeS = day;
                            dateS = DateUtil.formatDate(datetimeS,
                                format: DateFormats.y_mo_d);
                          });
                        }
                      });
                    }, timeType: TimeType.TimeTypeStart),
                    HEmptyView(10),
                    Text(
                      '至',
                      style: TextStyle(
                          fontSize: ScreenUtil().setSp(28),
                          color: MyColours.color_199095,
                          fontWeight: FontWeight.bold),
                    ),
                    HEmptyView(10),
                    _buttonChoose(dateE, (value) {
                      DialogUtil.showCalendarDialog(context, datetimeE)
                          .then((day) {
                        if (day != null) {
                          setState(() {
                            datetimeE = day;
                            dateE = DateUtil.formatDate(datetimeE,
                                format: DateFormats.y_mo_d);
                          });
                        }
                      });
                    }, timeType: TimeType.TimeTypeEnd),
                    HEmptyView(10),
                    Stack(clipBehavior: Clip.none, children: [
                      _buttonChoose('排序', (value) {
                        setState(() {
                          showWidget = !showWidget;
                          print('1');
                        });
                      }),
                      Positioned(
                          left: 0,
                          top: ScreenUtil().setWidth(58),
                          child: Material(
                              color: Colors.transparent,
                              child: Offstage(
                                offstage: showWidget,
                                child: _selectWidget(selectList, (index) {
                                  setState(() {
                                    showWidget = !showWidget;
                                    currentIndex = index;
                                  });
                                }),
                              ))),
                    ])
                  ],
                ),
              )),
          Container(
              alignment: Alignment.centerLeft,
              padding:
                  EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)),
              color: MyColours.color_f5f5f5,
              // width: double.infinity,
              height: ScreenUtil().setWidth(80),
              child: Row(
                children: [
                  Text(
                    '显示前 ',
                    style: TextStyle(
                        fontSize: ScreenUtil().setSp(26),
                        color: MyColours.color_333333),
                  ),
                  Container(
                      alignment: Alignment.center,
                      margin: EdgeInsets.symmetric(
                          vertical: ScreenUtil().setWidth(20)),
                      // alignment: Alignment.centerLeft,
                      // height: ScreenUtil().setWidth(80),
                      constraints: BoxConstraints(
                          maxWidth: ScreenUtil().setWidth(50 * 2)),
                      decoration: BoxDecoration(
                          border: Border(
                              bottom: BorderSide(
                                  width: ScreenUtil().setWidth(2),
                                  color: MyColours.color_199095))),
                      child: IntrinsicWidth(
                          child: TextField(
                        controller: controller,
                        maxLines: 1,
                        // inputFormatters: [
                        //   LengthLimitingTextInputFormatter(9),
                        //   WhitelistingTextInputFormatter.digitsOnly
                        // ],

                        // inputFormatters: [
                        //   NumLengthInputFormatter(
                        //       decimalLength: 2, integerLength: 6),
                        // ],
                        // focusNode: numberFocusNode,

                        //光标颜色
                        cursorColor: MyColours.color_199095,
                        //输入文本的样式
                        style: TextStyle(
                            fontSize: ScreenUtil().setSp(26),
                            color: MyColours.color_199095),
                        textAlign: TextAlign.center,
                        textInputAction: TextInputAction.done,
                        decoration: InputDecoration(
                          isDense: true,
                          hintText: "输入",
                          hintStyle: TextStyle(
                            color: MyColours.color_999999,
                            fontSize: ScreenUtil().setSp(26),
                          ),

                          contentPadding: EdgeInsets.zero, //ios 17
                          border: InputBorder.none,
                        ),
                        onChanged: (value) {},
                        onEditingComplete: () {
                          FocusScope.of(context)
                              .requestFocus(FocusNode()); //隐藏键盘
                          // _updateMoney();
                        },
                        keyboardType:
                            TextInputType.numberWithOptions(decimal: true),
                      )))
                ],
              )),
        ],
      ),
    );
  }
}