need_item.dart 2.94 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 NeedItem extends StatefulWidget{

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

  final int height;//高度

  NeedItem(this.table,{this.onSelected,this.canSelected=false,this.height=183});

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

class NeedItemState extends State<NeedItem>{

  @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: Stack(
        children: <Widget>[
          Container(
            width: ScreenUtil().setWidth(190),
            height: ScreenUtil().setWidth(widget.height),
            alignment: Alignment.center,
            margin:EdgeInsets.all( ScreenUtil().setWidth(9)),
            decoration: BoxDecoration(
                color: MyColours.color_a8e2e4,
                borderRadius: BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8)))
            ),
            child:Column(
              mainAxisSize: MainAxisSize.min,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                Text(table.name,style: TextStyle(color: MyColours.color_131313,fontSize: ScreenUtil().setSp(30),decoration: TextDecoration.none,fontWeight: FontWeight.normal),overflow: TextOverflow.ellipsis,),
                Offstage(
                  offstage: table.maxText.isEmpty?true:false,
                  child: Column(
                    mainAxisSize: MainAxisSize.min,
                    children: <Widget>[
                      VEmptyView(5),
                      Text(table.maxText,style: TextStyle(color: MyColours.color_777777,fontSize: ScreenUtil().setSp(26),decoration: TextDecoration.none,fontWeight: FontWeight.normal),overflow: TextOverflow.ellipsis,),
                    ],
                  ),
                ),
                Offstage(
                  offstage: table.lowStr.isEmpty?true:false,
                  child: Column(
                    mainAxisSize: MainAxisSize.min,
                    children: <Widget>[
                      VEmptyView(5),
                      Text(table.lowStr,style: TextStyle(color: MyColours.color_2bb5b7,fontSize: ScreenUtil().setSp(24),decoration: TextDecoration.none,fontWeight: FontWeight.normal),overflow: TextOverflow.ellipsis,)
                    ],
                  ),
                )
              ],
            )
          ),
        ],
      ),
    );
  }
}