area_item.dart 3.04 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/area.dart';
import 'package:one_key/res/colors.dart';

class AreaItem extends StatefulWidget {
  final String? currentArea; //当前选中区域名称
  final Area area;
  final ValueChanged selectCallback;
  final bool need;

  AreaItem(this.area, this.currentArea, this.selectCallback,
      {this.need = true});

  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new AreaItemState();
  }
}

class AreaItemState extends State<AreaItem> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    Area area = widget.area;
    bool isSelected = area.name == widget.currentArea;
    return GestureDetector(
      onTap: () {
        if (widget.selectCallback != null) {
          widget.selectCallback(widget.area);
        }
      },
      child: Stack(
        children: <Widget>[
          Container(
            width: ScreenUtil().setWidth(189),
            height: ScreenUtil().setHeight(207),
            alignment: Alignment.center,
            decoration: BoxDecoration(
                color: isSelected
                    ? MyColours.color_ffffff
                    : MyColours.color_f1f1f1,
                border: Border(
                    bottom: BorderSide(
                        color: MyColours.color_ffffff,
                        width: ScreenUtil().setHeight(1)))),
            child: Text(
              area.name!,
              style: TextStyle(
                  color: isSelected
                      ? MyColours.color_2bb5b7
                      : MyColours.color_828282,
                  fontSize: ScreenUtil().setSp(32),
                  decoration: TextDecoration.none,
                  fontWeight: FontWeight.normal),
            ),
          ),
          widget.need
              ? Positioned(
                  left: 0,
                  top: 0,
                  child: Container(
                    width: ScreenUtil().setWidth(73),
                    height: ScreenUtil().setHeight(37),
                    alignment: Alignment.center,
                    decoration: BoxDecoration(
                        color: area.count! <= 0
                            ? MyColours.color_999999
                            : MyColours.color_63a6d1,
                        borderRadius: BorderRadius.only(
                            topRight: Radius.circular(ScreenUtil().setWidth(8)),
                            bottomRight:
                                Radius.circular(ScreenUtil().setWidth(8)))),
                    child: Text(area.count! <= 0 ? "满座" : "余${area.count}",
                        style: TextStyle(
                            color: MyColours.color_ffffff,
                            fontSize: ScreenUtil().setSp(26),
                            decoration: TextDecoration.none,
                            fontWeight: FontWeight.normal)),
                  ),
                )
              : SizedBox(),
        ],
      ),
    );
  }
}