feast_page.dart 6.48 KB
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/GetBanquetByTimeModel.dart';
import 'package:one_key/pages/feast/feast_item.dart';
import 'package:one_key/provider/feast_model.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.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 '../../constant/state.dart';
import '../../provider/user_model.dart';
import '../../res/colors.dart';

import '../../utils/event_bus.dart';
import '../../widgets/page_exception.dart';

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

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

class _FeastPageState extends State<FeastPage> {
  ScrollController controller = ScrollController();
  FeastModel feastModel;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _getBanquetByTime();
      // scrollController.jumpTo(scrollController.position.minScrollExtent);
    });

    bus.on("feast_home_page", (arg) {
      _getBanquetByTime();
    });
  }

  @override
  void dispose() {
    super.dispose();
    bus.off('feast_home_page');
  }

  ///获取宴会详情
  _getBanquetByTime() async {
    DateTime now = DateTime.now();
    DateTime new7 = now.add(Duration(days: 7));
    String timeStrStart = now.year.toString() +
        "-" +
        Utils.addZeroNumber(now.month) +
        "-" +
        Utils.addZeroNumber(now.day) +
        " 00:00:00";
    String timeStrEnd = new7.year.toString() +
        "-" +
        Utils.addZeroNumber(new7.month) +
        "-" +
        Utils.addZeroNumber(new7.day) +
        " 23:59:59";
    double startDay =
        (DateTime.parse(timeStrStart).millisecondsSinceEpoch) / 1000;
    double endDay = (DateTime.parse(timeStrEnd).millisecondsSinceEpoch) / 1000;
    Map<String, String> pramas = {
      'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
      'rdate': startDay.floor().toString(),
      'edate': endDay.floor().toString()
    }; //
    bool success = await feastModel.getBanquetByTime(context, pramas);
  }

  Widget upAndDown(String image, String title, {GestureTapCallback onTap}) {
    return InkWell(
        onTap: onTap,
        child: Column(
          children: [
            Image.asset(Utils.getImgPath(image),
                width: ScreenUtil().setWidth(36 * 2)),
            VEmptyView(8),
            Text(
              title,
              style: TextStyle(
                  fontSize: ScreenUtil().setSp(28),
                  color: MyColours.color_515151),
            )
          ],
        ));
  }

  @override
  Widget build(BuildContext context) {
    feastModel = Provider.of<FeastModel>(context, listen: true);
    return Scaffold(
        backgroundColor: MyColours.color_ffffff,
        // appBar: SystemAppBar(''),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            VEmptyView(112),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: [
                upAndDown('y_kanban', '宴会看板', onTap: () {
                  NavigatorUtil.goFeastBoardPage(context);
                }),
                upAndDown('y_new', '新建宴会', onTap: () {
                  NavigatorUtil.goFeastCreatePage(context);
                }),
                Stack(clipBehavior: Clip.none, children: [
                  upAndDown('y_schedule', '待跟进', onTap: () {
                    NavigatorUtil.goFeastFollowUpPage(context);
                  }),
                  Positioned(
                    right: ScreenUtil().setWidth(-6),
                    bottom: ScreenUtil().setWidth(32),
                    child: Container(
                      alignment: Alignment.center,
                      decoration: BoxDecoration(
                          borderRadius:
                              BorderRadius.circular(ScreenUtil().setWidth(16)),
                          color: MyColours.color_E34D59),
                      width: ScreenUtil().setWidth(32),
                      height: ScreenUtil().setWidth(32),
                      child: Text(
                        '7',
                        style: TextStyle(
                            color: MyColours.color_F6F6F6,
                            fontWeight: FontWeight.bold,
                            fontSize: ScreenUtil().setSp(24)),
                      ),
                    ),
                  )
                ]),
                upAndDown('y_money', '定金管理', onTap: () {
                  NavigatorUtil.goFeastDepositDataPage(context);
                })
              ],
            ),
            VEmptyView(102),
            Padding(
              padding: EdgeInsets.only(left: ScreenUtil().setWidth(48)),
              child: Text(
                '7天内宴会',
                style: TextStyle(
                    color: MyColours.color_000000,
                    fontSize: ScreenUtil().setSp(28)),
              ),
            ),
            VEmptyView(26),
            Expanded(child: Consumer<FeastModel>(builder: (context, model, _) {
              if (model.pageState != PageState.Success) {
                return ExceptionPage(
                  pageState: model.pageState,
                  callback: () {
                    // offset = 0;
                    // getMessage(showLoading: true);
                  },
                  emptyMsg: "还未创建宴会",
                  emptyImg: "empty_search",
                  showMsg: "加载中,请稍后...",
                );
              } else {
                return ListView.builder(
                  controller: controller,
                  padding: EdgeInsets.symmetric(
                      horizontal: ScreenUtil().setWidth(24)),
                  itemBuilder: (context, index) {
                    GetBanquetByTimeSunModel sunModel =
                        feastModel.banquetHome[index];
                    return InkWell(
                        onTap: () {
                          NavigatorUtil.goFeastDetailPage(context, sunModel.id);
                        },
                        child: FeastItem(controller, sunModel));
                  },
                  itemCount: feastModel.banquetHome.length,
                );
              }
            }))
          ],
        ));
  }
}