feast_board_item.dart 8.13 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/v_empty_view.dart';

import '../../models/get_board_model.dart';
import '../../route/navigator_util.dart';
import '../../utils/screen_util.dart';
import '../../widgets/round_button.dart';

class FeastBoardItem extends StatefulWidget {
  final FeastBoardModel boardModel;
  final ScrollController controller;
  final bool isOpen;
  FeastBoardItem({Key key, this.boardModel, this.controller, this.isOpen})
      : super(key: key);

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

class _FeastBoardItemState extends State<FeastBoardItem> {
  Widget numWidget(String title, bool select, String subTitle,
      {bool needMargin = true}) {
    return Container(
        margin: needMargin
            ? EdgeInsets.only(right: ScreenUtil().setWidth(50))
            : EdgeInsets.zero,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              width: ScreenUtil().setWidth(32),
              height: ScreenUtil().setWidth(32),
              alignment: Alignment.center,
              decoration: BoxDecoration(
                  color:
                      select ? MyColours.color_438E93 : MyColours.color_BFC4D4,
                  borderRadius: BorderRadius.circular(ScreenUtil().radius(4))),
              child: Text(
                title,
                style: TextStyle(
                    color: select
                        ? MyColours.color_ffffff
                        : MyColours.color_515151,
                    fontSize: ScreenUtil().setSp(16)),
              ),
            ),
            VEmptyView(4),
            Container(
                // width: ScreenUtil().setWidth(32),
                child: Text(
              subTitle,
              style:
                  TextStyle(color: MyColours.color_515151, fontSize: font(14)),
            ))
          ],
        ));
  }

  Widget canduanWidget(String title) {
    return Column(
      children: [
        VEmptyView(16),
        Row(
          children: [
            Text(
              title,
              style: TextStyle(
                  fontSize: ScreenUtil().setSp(28),
                  color: MyColours.color_000000,
                  fontWeight: FontWeight.bold),
            ),
            HEmptyView(56),
            Expanded(
                child: ListView.builder(
                    shrinkWrap: true,
                    padding: EdgeInsets.symmetric(
                        horizontal: ScreenUtil().setWidth(8)),
                    controller: widget.controller,
                    physics: NeverScrollableScrollPhysics(),
                    itemBuilder: (context, index) {
                      FeastBoardSunModel boardSunModel =
                          widget.boardModel.data[title][index];

                      return InkWell(
                          onTap: () {
                            //点击进入宴会详情
                            NavigatorUtil.goFeastDetailPage(
                                context, boardSunModel.rid,
                                needChange: false);
                          },
                          child: Row(
                              mainAxisSize: MainAxisSize.min,
                              children: <Widget>[
                                Container(
                                    height: h(24),
                                    // constraints: BoxConstraints.expand(),
                                    alignment: Alignment.centerLeft,
                                    margin: index ==
                                            widget.boardModel.data[title]
                                                    .length -
                                                1
                                        ? EdgeInsets.zero
                                        : EdgeInsets.only(bottom: h(16)),
                                    padding: EdgeInsets.symmetric(
                                        horizontal: w(4), vertical: w(2)),
                                    decoration: BoxDecoration(
                                      color: MyColours.color_438E93,
                                      borderRadius: BorderRadius.circular(w(5)),
                                    ),
                                    child: ConstrainedBox(
                                      constraints: BoxConstraints(
                                        maxWidth: w(227),
                                      ),
                                      child: Text(
                                        '${boardSunModel.className}-${boardSunModel.rname}-${boardSunModel.talbeStrShow}',
                                        overflow: TextOverflow.ellipsis,
                                        softWrap: true,
                                        maxLines: 1,
                                        style: TextStyle(
                                            fontSize: font(14),
                                            color: MyColours.color_F6F6F6),
                                      ),
                                    )),
                                Expanded(child: SizedBox()),
                              ]));
                    },
                    itemCount: widget.boardModel.data[title].length)),
          ],
        ),
        VEmptyView(16),
        MyDivider(
          double.infinity,
          ScreenUtil().setWidth(2),
          color: MyColours.color_DBDBDB,
        )
      ],
    );
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(40)),
      padding: EdgeInsets.symmetric(
          horizontal: ScreenUtil().setWidth(24),
          vertical: ScreenUtil().setWidth(16)),
      decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(ScreenUtil().radius(10)),
          border: Border.all(
              color: MyColours.color_438E93, width: ScreenUtil().setWidth(2))),
      child: Column(
        children: [
          Row(
            children: [
              Text(
                widget.boardModel.title,
                style: TextStyle(
                    color: MyColours.color_438E93,
                    fontSize: ScreenUtil().setSp(40),
                    fontWeight: FontWeight.bold),
              ),
              Spacer(),
              numWidget(
                  widget.boardModel.data['早餐'].length == 0
                      ? '空'
                      : '${widget.boardModel.data['早餐'].length}',
                  widget.boardModel.data['早餐'].length == 0 ? false : true,
                  '早餐'),
              numWidget(
                  widget.boardModel.data['午餐'].length == 0
                      ? '空'
                      : '${widget.boardModel.data['午餐'].length}',
                  widget.boardModel.data['午餐'].length == 0 ? false : true,
                  '午餐'),
              numWidget(
                  widget.boardModel.data['晚餐'].length == 0
                      ? '空'
                      : '${widget.boardModel.data['晚餐'].length}',
                  widget.boardModel.data['晚餐'].length == 0 ? false : true,
                  '晚餐'),
              numWidget(
                  widget.boardModel.data['其他'].length == 0
                      ? '空'
                      : '${widget.boardModel.data['其他'].length}',
                  widget.boardModel.data['其他'].length == 0 ? false : true,
                  '其他',
                  needMargin: false),
            ],
          ),
          widget.isOpen ? VEmptyView(24) : SizedBox(),
          widget.isOpen ? canduanWidget('早餐') : SizedBox(),
          widget.isOpen ? canduanWidget('午餐') : SizedBox(),
          widget.isOpen ? canduanWidget('晚餐') : SizedBox(),
          widget.isOpen ? canduanWidget('其他') : SizedBox(),
        ],
      ),
    );
  }
}