Merge pull request #36 from GetStream/vishal/channel-preview

Adding support for one-on-one conversation to channel preview
This commit is contained in:
Salvatore Giordano
2020-04-19 23:28:55 +02:00
committed by GitHub
2 changed files with 26 additions and 6 deletions
+13 -2
View File
@@ -57,11 +57,22 @@ class ChannelImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final client = StreamChat.of(context);
final channel = this.channel ?? StreamChannel.of(context).channel;
return StreamBuilder<Map<String, dynamic>>(
stream: channel.extraDataStream,
initialData: channel.extraData,
builder: (context, snapshot) {
var image = '';
if (snapshot.data?.containsKey('image') == true) {
image = snapshot.data['image'];
} else if (channel.state.members.length == 2) {
final otherMember = channel.state.members.firstWhere(
(member) => member.user.id != client.user.id
);
image = otherMember.user.image;
}
return ClipRRect(
borderRadius: StreamChatTheme.of(context)
.channelPreviewTheme
@@ -75,9 +86,9 @@ class ChannelImage extends StatelessWidget {
decoration: BoxDecoration(
color: StreamChatTheme.of(context).accentColor,
),
child: snapshot.data?.containsKey('image') ?? false
child: image != ''
? CachedNetworkImage(
imageUrl: snapshot.data['image'],
imageUrl: image,
errorWidget: (_, __, ___) {
return Center(
child: Text(
+13 -4
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:stream_chat/stream_chat.dart';
import '../stream_chat_flutter.dart';
import 'stream_channel.dart';
/// It shows the current [Channel] name using a [Text] widget.
@@ -21,15 +22,23 @@ class ChannelName extends StatelessWidget {
@override
Widget build(BuildContext context) {
final client = StreamChat.of(context);
final channel = this.channel ?? StreamChannel.of(context).channel;
return StreamBuilder<Map<String, dynamic>>(
stream: channel.extraDataStream,
initialData: channel.extraData,
builder: (context, snapshot) {
return Text(
snapshot.data != null
? (snapshot.data['name'] ?? channel.cid)
: channel.cid,
var title;
if (snapshot.data['name'] == null && channel.state.members.length == 2) {
final otherMember = channel.state.members.firstWhere(
(member) => member.user.id != client.user.id
);
title = otherMember.user.name;
} else {
title = snapshot.data['name'] ?? channel.id;
}
return Text(title,
style: textStyle,
);
},