// Flutter imports: import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; // Package imports: import 'package:image_stack/image_stack.dart'; // Project imports: import 'package:akuCommunity/base/base_style.dart'; import 'package:akuCommunity/utils/headers.dart'; import 'package:akuCommunity/widget/cached_image_wrapper.dart'; class CommunityCard extends StatefulWidget { final String imagePath, title, subtitle, timeZone; final List headList; final bool isOver; final int peopleNum; final Function fun; CommunityCard( {Key key, this.imagePath, this.title, this.subtitle, this.timeZone, this.headList, this.isOver, this.peopleNum, this.fun}) : super(key: key); @override _CommunityCardState createState() => _CommunityCardState(); } class _CommunityCardState extends State { Container _cardHeader(String imagePath, title, subtitle, timeZone) { return Container( child: Row( children: [ Container( margin: EdgeInsets.only(bottom: 16.w), child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(6)), child: CachedImageWrapper( url: imagePath, width: 160.w, height: 120.w, ), ), ), SizedBox(width: 20.w), Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: 480.w, margin: EdgeInsets.only(bottom: 6.w), child: Text( title, overflow: TextOverflow.ellipsis, maxLines: 1, style: TextStyle( fontSize: BaseStyle.fontSize28, color: BaseStyle.color4a4b51), ), ), Container( width: 480.w, margin: EdgeInsets.only(bottom: 8.w), child: Text( subtitle, overflow: TextOverflow.ellipsis, maxLines: 1, style: TextStyle( fontSize: BaseStyle.fontSize24, color: BaseStyle.color999999), ), ), Container( width: 480.w, child: RichText( overflow: TextOverflow.ellipsis, maxLines: 1, text: TextSpan(children: [ TextSpan( text: '参与时间: ', style: TextStyle( fontSize: BaseStyle.fontSize24, color: BaseStyle.color999999), ), TextSpan( text: timeZone, style: TextStyle( fontSize: BaseStyle.fontSize24, color: BaseStyle.color4a4b51), ), ]), ), ), ], ), ], ), ); } Container _cardFooter(String imagePath,title, List headList, bool isOver, int peopleNum, Function fun) { return Container( margin: EdgeInsets.only(top: 40.w), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( margin: EdgeInsets.only(left: 80.w), child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( margin: EdgeInsets.only(right: 26.w), child: ImageStack( imageList: headList, imageRadius: 44.sp, imageCount: 3, imageBorderWidth: 1, totalCount: 3, ), ), Text( '$peopleNum人已参加', style: TextStyle( fontSize: BaseStyle.fontSize22, color: ktextPrimary), ), ], ), ), InkWell( onTap: () { fun(imagePath,title); }, child: Container( alignment: Alignment.center, height: 44.w, width: 120.w, padding: EdgeInsets.symmetric( vertical: 7.w, ), decoration: BoxDecoration( color: isOver ? BaseStyle.colorababab : BaseStyle.colorffc40c, borderRadius: BorderRadius.all(Radius.circular(22)), ), child: Text( isOver ? '已结束' : '去参与', style: TextStyle( fontWeight: FontWeight.w600, fontSize: BaseStyle.fontSize22, color: BaseStyle.color4a4b51), ), ), ) ], ), ); } @override Widget build(BuildContext context) { return Container( color: Colors.white, margin: EdgeInsets.only( top: 24.w, left: 32.w, right: 32.w, ), padding: EdgeInsets.only( top: 12.w, left: 10.w, right: 16.w, bottom: 20.w, ), child: Column( children: [ _cardHeader( widget.imagePath, widget.title, widget.subtitle, widget.timeZone, ), _cardFooter( widget.imagePath, widget.title, widget.headList, widget.isOver, widget.peopleNum, widget.fun, ) ], ), ); } }