import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() async { final client = Client('qk4nn7rpcn75'); await client.setUser( User(id: 'wild-breeze-7'), 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoid2lsZC1icmVlemUtNyJ9.VM2EX1EXOfgqa-bTH_3JzeY0T99ngWzWahSauP3dBMo', ); runApp(MyApp(client)); } class MyApp extends StatelessWidget { final Client client; MyApp(this.client); @override Widget build(BuildContext context) { return MaterialApp( home: Container( child: StreamChat( client: client, child: ChannelListPage(), ), ), ); } } class ChannelListPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: ChannelListView( filter: { 'members': { '\$in': [StreamChat.of(context).user.id], } }, sort: [SortOption('last_message_at')], pagination: PaginationParams( limit: 20, ), channelWidget: ChannelPage(), ), ); } } class ChannelPage extends StatelessWidget { const ChannelPage({ Key key, }) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: ChannelHeader(), body: Column( children: [ Expanded( child: MessageListView( messageBuilder: _messageBuilder, ), ), MessageInput(), ], ), ); } Widget _messageBuilder(context, message, index) { final isCurrentUser = StreamChat.of(context).user.id == message.user.id; final textAlign = isCurrentUser ? TextAlign.right : TextAlign.left; final color = isCurrentUser ? Colors.blueGrey : Colors.blue; return Padding( padding: EdgeInsets.all(5.0), child: Container( decoration: BoxDecoration( border: Border.all(color: color, width: 1), borderRadius: BorderRadius.all( Radius.circular(5.0), ), ), child: ListTile( title: Text( message.text, textAlign: textAlign, ), subtitle: Text( message.user.extraData['name'], textAlign: textAlign, ), ), ), ); } }