From 4e073d47fda2402fd40aa05ca9077787c883a196 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 25 Feb 2020 13:07:23 +0100 Subject: [PATCH] update customize_channel_preview example --- example/lib/customize_channel_preview.dart | 16 +++++----- lib/src/channel_avatar.dart | 29 +++++++++++++++++++ ...annel_name_text.dart => channel_name.dart} | 8 ++--- lib/src/channel_preview.dart | 4 +-- lib/src/message_widget.dart | 2 +- lib/stream_chat_flutter.dart | 3 +- 6 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 lib/src/channel_avatar.dart rename lib/src/{channel_name_text.dart => channel_name.dart} (64%) diff --git a/example/lib/customize_channel_preview.dart b/example/lib/customize_channel_preview.dart index fadf319c..ca46b2e4 100644 --- a/example/lib/customize_channel_preview.dart +++ b/example/lib/customize_channel_preview.dart @@ -32,19 +32,21 @@ class ChannelListPage extends StatelessWidget { channelPreviewBuilder: (context, channelClient) { final channelState = channelClient.state.channelState; return ListTile( - leading: CircleAvatar( - backgroundImage: - channelState.channel.extraData.containsKey('image') - ? NetworkImage(channelState.channel.extraData['image']) - : null, + leading: ChannelAvatar( + channel: channelState.channel, + ), + title: ChannelName( + channel: channelState.channel, ), - title: Text(channelState.channel.extraData['name'] ?? ''), trailing: channelClient.state.unreadCount > 0 ? CircleAvatar( radius: 10, child: Text(channelClient.state.unreadCount.toString()), ) - : Container(), + : SizedBox( + height: 0, + width: 0, + ), ); }, sort: [SortOption('last_message_at')], diff --git a/lib/src/channel_avatar.dart b/lib/src/channel_avatar.dart new file mode 100644 index 00000000..0246ba29 --- /dev/null +++ b/lib/src/channel_avatar.dart @@ -0,0 +1,29 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat/stream_chat.dart'; + +class ChannelAvatar extends StatelessWidget { + const ChannelAvatar({ + Key key, + @required this.channel, + this.radius = 20, + }) : super(key: key); + + final Channel channel; + final double radius; + + @override + Widget build(BuildContext context) { + return CircleAvatar( + radius: radius, + backgroundImage: channel.extraData.containsKey('image') + ? CachedNetworkImageProvider(channel.extraData['image']) + : null, + child: channel.extraData.containsKey('image') + ? null + : Text(channel.extraData.containsKey('name') + ? channel.extraData['name'][0] + : ''), + ); + } +} diff --git a/lib/src/channel_name_text.dart b/lib/src/channel_name.dart similarity index 64% rename from lib/src/channel_name_text.dart rename to lib/src/channel_name.dart index f31f38c5..a875ab5d 100644 --- a/lib/src/channel_name_text.dart +++ b/lib/src/channel_name.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:stream_chat/stream_chat.dart'; -class ChannelNameText extends StatelessWidget { - const ChannelNameText({ +class ChannelName extends StatelessWidget { + const ChannelName({ Key key, - this.channel, + @required this.channel, }) : super(key: key); final Channel channel; @@ -12,7 +12,7 @@ class ChannelNameText extends StatelessWidget { @override Widget build(BuildContext context) { return Text( - channel.extraData['name'] as String ?? channel.config.name, + channel.extraData['name'] as String ?? channel.cid, style: Theme.of(context).textTheme.body2, ); } diff --git a/lib/src/channel_preview.dart b/lib/src/channel_preview.dart index 1372826f..b3659398 100644 --- a/lib/src/channel_preview.dart +++ b/lib/src/channel_preview.dart @@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; import 'channel_image.dart'; -import 'channel_name_text.dart'; +import 'channel_name.dart'; class ChannelPreview extends StatelessWidget { final void Function(ChannelClient) onTap; @@ -27,7 +27,7 @@ class ChannelPreview extends StatelessWidget { leading: ChannelImage( channel: channelState.channel, ), - title: ChannelNameText( + title: ChannelName( channel: channelState.channel, ), subtitle: _buildSubtitle(), diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index aba9ced1..093924e9 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -5,12 +5,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter/src/user_avatar.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:video_player/video_player.dart'; import 'message_list_view.dart'; import 'stream_chat.dart'; -import 'user_avatar.dart'; class MessageWidget extends StatefulWidget { const MessageWidget({ diff --git a/lib/stream_chat_flutter.dart b/lib/stream_chat_flutter.dart index 37db4814..989cffb2 100644 --- a/lib/stream_chat_flutter.dart +++ b/lib/stream_chat_flutter.dart @@ -1,10 +1,11 @@ export 'package:stream_chat/stream_chat.dart'; +export 'src/channel_avatar.dart'; export 'src/channel_list_view.dart'; +export 'src/channel_name.dart'; export 'src/channel_preview.dart'; export 'src/message_input.dart'; export 'src/message_list_view.dart'; export 'src/message_widget.dart'; export 'src/stream_channel.dart'; export 'src/stream_chat.dart'; -export 'src/user_avatar.dart';