import 'package:flutter/cupertino.dart'; import 'package:imessage/channel_image.dart'; import 'package:imessage/channel_name_text.dart'; import 'package:imessage/utils.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart' show Channel; import 'utils.dart'; class ChannelPreview extends StatelessWidget { final VoidCallback onTap; final Channel channel; const ChannelPreview({ Key? key, required this.onTap, required this.channel, }) : super(key: key); @override Widget build(BuildContext context) { final lastMessage = channel.state!.messages.isNotEmpty ? channel.state!.messages.last : null; final prefix = lastMessage?.attachments != null ? lastMessage?.attachments //TODO: ugly .map((e) { if (e.type == 'image') { return '📷 '; } else if (e.type == 'video') { return '🎬 '; } return null; }) .where((e) => e != null) .join(' ') : ''; return GestureDetector( onTap: onTap, behavior: HitTestBehavior.opaque, child: Container( constraints: BoxConstraints.tightFor( height: 90, ), child: Padding( padding: const EdgeInsets.symmetric( horizontal: 8.0, ), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 8.0), child: ChannelImage( channel: channel, size: 50, ), ), Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: ChannelNameText( channel: channel, ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( children: [ Text( isSameWeek(channel.lastMessageAt!) ? formatDateSameWeek(channel.lastMessageAt!) : formatDate(channel.lastMessageAt!), style: TextStyle( fontSize: 15, color: CupertinoColors.systemGrey, ), ), Icon( CupertinoIcons.right_chevron, color: CupertinoColors.systemGrey3, ), ], ), ) ], ), Padding( padding: const EdgeInsets.all(8.0), child: Text( '$prefix${lastMessage?.text ?? ''}', style: TextStyle( fontWeight: FontWeight.normal, color: CupertinoColors.systemGrey, fontSize: 16, ), maxLines: 2, overflow: TextOverflow.ellipsis, ), ), Divider(), ], ), ) ], ), ), ), ); } }