table_item.dart 4.2 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';

import 'package:one_key/models/table.dart' as t;
import 'package:one_key/widgets/v_empty_view.dart';

class TableItem extends StatefulWidget{

  final t.Table table;
  final bool canSelected;//是否能选中
  final ValueChanged onSelected;

  TableItem(this.table,{this.onSelected,this.canSelected=false});

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

class TableItemState extends State<TableItem>{

  @override
  Widget build(BuildContext context) {
    // TODO: implement build

    t.Table table=widget.table;

    return GestureDetector(
      onTap: (){
        if(widget.canSelected&&table.signStr.isEmpty){
          setState(() {
            table.selected=!(table.selected??false);
          });
          widget.onSelected(table);
        }
      },
      child: Container(
        width: ScreenUtil().setWidth(150),
        height: ScreenUtil().setHeight(183),
        margin:EdgeInsets.all( ScreenUtil().setWidth(9)),
        decoration: BoxDecoration(
            color: MyColours.color_a8e2e4,
            borderRadius: BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8)))
        ),
        child: Stack(
          alignment: Alignment.center,
          children: <Widget>[
            Positioned(
              left: 0,
              top: 0,
              child: table.tidStr==null?Container():Container(
                width: ScreenUtil().setWidth(60),
                height: ScreenUtil().setHeight(27),
                alignment: Alignment.center,
                decoration: BoxDecoration(
                    color: MyColours.color_63a6d1,
                    borderRadius: BorderRadius.only(topLeft: Radius.circular(ScreenUtil().setWidth(8)),topRight: Radius.circular(ScreenUtil().setWidth(8)),bottomRight: Radius.circular(ScreenUtil().setWidth(8)))
                ),
                child: Text(table.tidStr,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(19),decoration: TextDecoration.none)),
              ),
            ),
            Container(
              alignment: Alignment.centerLeft,
              child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text(table.name,style: TextStyle(color: MyColours.color_131313,fontSize: ScreenUtil().setSp(26),decoration: TextDecoration.none),),
                  VEmptyView(5),
                  Text((table.reserver==null||table.reserver.isEmpty)?table.tableNum:table.reserver,style: TextStyle(color: (table.reserver==null||table.reserver.isEmpty)?MyColours.color_777777:MyColours.color_2bb5b7,fontSize: ScreenUtil().setSp(22),decoration: TextDecoration.none),overflow: TextOverflow.ellipsis,),
                  VEmptyView(5),
                  Text(table.lowStr,style: TextStyle(color: MyColours.color_777777,fontSize: ScreenUtil().setSp(22),decoration: TextDecoration.none),overflow: TextOverflow.ellipsis,)
                ],
              ),
            ),
            Positioned(
              bottom: 0,
              left: 0,
              right: 0,
              child: table.signStr.isEmpty?Container():Container(
                width: ScreenUtil().setWidth(150),
                height: ScreenUtil().setHeight(46),
                alignment: Alignment.center,
                decoration: BoxDecoration(
                    color:MyColours.color_89c0b7,
                    borderRadius: BorderRadius.only(bottomLeft: Radius.circular(ScreenUtil().setWidth(8)),bottomRight: Radius.circular(ScreenUtil().setWidth(8)))
                ),
                child: Text(table.signStr,style: TextStyle(color:MyColours.color_ffffff,fontSize: ScreenUtil().setSp(24),decoration: TextDecoration.none),),
              ),
            ),
            Positioned(
              top: 0,
              right: 0,
              child: !(table.selected??false)?Container():Image.asset("assets/icon_selected.png",width: ScreenUtil().setWidth(27),height: ScreenUtil().setWidth(27),)
            )
          ],
        ),
      ),
    );
  }
}