import 'package:flutter/material.dart'; import '../stream_chat_flutter.dart'; /// This widget is used for showing user tiles for mentions /// Use [title], [subtitle], [leading], [trailing] for substituting widgets in respective positions class MentionTile extends StatelessWidget { /// Member to display in the tile final Member member; /// Widget to display as title final Widget? title; /// Widget to display below [title] final Widget? subtitle; /// Widget at the start of the tile final Widget? leading; /// Widget at the end of tile final Widget? trailing; MentionTile( this.member, { this.title, this.subtitle, this.leading, this.trailing, }); @override Widget build(BuildContext context) { return Container( height: 56.0, child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( width: 16.0, ), leading ?? UserAvatar( constraints: BoxConstraints.tight( Size( 40, 40, ), ), user: member.user!, ), SizedBox( width: 8.0, ), Expanded( child: Align( alignment: Alignment.centerLeft, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ title ?? Text( '${member.user!.name}', maxLines: 1, overflow: TextOverflow.ellipsis, style: StreamChatTheme.of(context).textTheme.bodyBold, ), SizedBox( height: 2.0, ), subtitle ?? Text( '@${member.userId}', maxLines: 1, overflow: TextOverflow.ellipsis, style: StreamChatTheme.of(context) .textTheme .footnoteBold .copyWith( color: StreamChatTheme.of(context).colorTheme.grey, ), ), ], ), ), ), trailing ?? Padding( padding: const EdgeInsets.only( right: 18.0, left: 8.0, ), child: StreamSvgIcon.mentions( color: StreamChatTheme.of(context).colorTheme.accentBlue, ), ), ], ), ); } }