import 'package:dotted_border/dotted_border.dart'; import 'package:flutter/material.dart'; import '../../base/YSTools.dart'; class YSInstitutionListItemView extends StatefulWidget { final Map item; const YSInstitutionListItemView({Key key, this.item}) : super(key: key); @override _YSInstitutionListItemViewState createState() => _YSInstitutionListItemViewState(); } class _YSInstitutionListItemViewState extends State { @override Widget build(BuildContext context) { List array = widget.item['voucherDepartmentList']??[]; bool isOpen = widget.item['isOpen']??false; int length = array.length; if(isOpen==false){ length = array.length>2?2:array.length; } return DottedBorder( color: Color(0xFFFF6D96), borderType: BorderType.RRect, radius: Radius.circular(9), strokeWidth: 1, padding: EdgeInsets.all(0), child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(9)) ), child: LayoutBuilder( builder: (context,conSize){ return Column( children: [ Container( child: Text(widget.item['hospitalName'],style: TextStyle(fontSize: 16,color: Color(0xFFEE6B8F)),maxLines: 1,), alignment: Alignment.centerLeft, padding: EdgeInsets.only(top: 10), ), SizedBox( height: 30, child: Row( children: [ Container( width: conSize.maxWidth*0.7, child: Text('服务券',style: TextStyle(fontSize: 14,color: Color(0xFF444444)),), alignment: Alignment.centerLeft, ), Container( width: conSize.maxWidth*0.3, child: Text('科室',style: TextStyle(fontSize: 14,color: Color(0xFF444444)),), alignment: Alignment.centerRight, ) ], ), ), ListView.builder( itemBuilder: (context,indexSub){ Map itemSub = array[indexSub]; return SizedBox( height: 20, child: Row( children: [ Container( width: conSize.maxWidth*0.7, child: Text(itemSub['couponName'],style: TextStyle(fontSize: 12,color: Color(0xFF8A8A8A)),), alignment: Alignment.centerLeft, ), Container( width: conSize.maxWidth*0.3, child: Text(itemSub['departmentName'],style: TextStyle(fontSize: 12,color: Color(0xFF8A8A8A)),), alignment: Alignment.centerRight, ) ], ), ); }, itemCount: length, padding: EdgeInsets.all(0), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, ), array.length>2?Container( height: 30, child: GestureDetector( onTap: (){ if(widget.item['isOpen']==true){ widget.item['isOpen'] = false; }else{ widget.item['isOpen'] = true; } setState(() {}); }, behavior: HitTestBehavior.opaque, child: Row( mainAxisSize: MainAxisSize.min, children: [ Text(isOpen?'收起':'显示更多',style: TextStyle(fontSize: 10,color: Color(0xFFD8D8D8)),), Icon(isOpen?Icons.keyboard_arrow_up:Icons.keyboard_arrow_down,size: 15,color: Color(0xFFD8D8D8),) ], ), ), ):Container(height: 10,), DashLine(height: 1,color: Color(0xFF979797),), Padding( padding: EdgeInsets.only(top: 10,bottom: 10), child: Row( children: [ Container( width: conSize.maxWidth-10, child: Text('${widget.item['hospitalAddress']} | ${widget.item['businessHoursInformation']}',style: TextStyle(fontSize: 14,color: Color(0xFF444444)),), alignment: Alignment.centerLeft, ), // Image.asset('lib/images/地址_fy.png',height: 10,width: 10,) ], ), ) ], ); }, ), padding: EdgeInsets.only(left: 15,right: 15), ), ); } }