update customize_channel_preview example

This commit is contained in:
Salvatore Giordano
2020-02-25 13:07:23 +01:00
parent 65d9d7889d
commit 4e073d47fd
6 changed files with 47 additions and 15 deletions
+9 -7
View File
@@ -32,19 +32,21 @@ class ChannelListPage extends StatelessWidget {
channelPreviewBuilder: (context, channelClient) { channelPreviewBuilder: (context, channelClient) {
final channelState = channelClient.state.channelState; final channelState = channelClient.state.channelState;
return ListTile( return ListTile(
leading: CircleAvatar( leading: ChannelAvatar(
backgroundImage: channel: channelState.channel,
channelState.channel.extraData.containsKey('image') ),
? NetworkImage(channelState.channel.extraData['image']) title: ChannelName(
: null, channel: channelState.channel,
), ),
title: Text(channelState.channel.extraData['name'] ?? ''),
trailing: channelClient.state.unreadCount > 0 trailing: channelClient.state.unreadCount > 0
? CircleAvatar( ? CircleAvatar(
radius: 10, radius: 10,
child: Text(channelClient.state.unreadCount.toString()), child: Text(channelClient.state.unreadCount.toString()),
) )
: Container(), : SizedBox(
height: 0,
width: 0,
),
); );
}, },
sort: [SortOption('last_message_at')], sort: [SortOption('last_message_at')],
+29
View File
@@ -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]
: ''),
);
}
}
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
class ChannelNameText extends StatelessWidget { class ChannelName extends StatelessWidget {
const ChannelNameText({ const ChannelName({
Key key, Key key,
this.channel, @required this.channel,
}) : super(key: key); }) : super(key: key);
final Channel channel; final Channel channel;
@@ -12,7 +12,7 @@ class ChannelNameText extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Text( return Text(
channel.extraData['name'] as String ?? channel.config.name, channel.extraData['name'] as String ?? channel.cid,
style: Theme.of(context).textTheme.body2, style: Theme.of(context).textTheme.body2,
); );
} }
+2 -2
View File
@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'channel_image.dart'; import 'channel_image.dart';
import 'channel_name_text.dart'; import 'channel_name.dart';
class ChannelPreview extends StatelessWidget { class ChannelPreview extends StatelessWidget {
final void Function(ChannelClient) onTap; final void Function(ChannelClient) onTap;
@@ -27,7 +27,7 @@ class ChannelPreview extends StatelessWidget {
leading: ChannelImage( leading: ChannelImage(
channel: channelState.channel, channel: channelState.channel,
), ),
title: ChannelNameText( title: ChannelName(
channel: channelState.channel, channel: channelState.channel,
), ),
subtitle: _buildSubtitle(), subtitle: _buildSubtitle(),
+1 -1
View File
@@ -5,12 +5,12 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:stream_chat/stream_chat.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:url_launcher/url_launcher.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
import 'message_list_view.dart'; import 'message_list_view.dart';
import 'stream_chat.dart'; import 'stream_chat.dart';
import 'user_avatar.dart';
class MessageWidget extends StatefulWidget { class MessageWidget extends StatefulWidget {
const MessageWidget({ const MessageWidget({
+2 -1
View File
@@ -1,10 +1,11 @@
export 'package:stream_chat/stream_chat.dart'; export 'package:stream_chat/stream_chat.dart';
export 'src/channel_avatar.dart';
export 'src/channel_list_view.dart'; export 'src/channel_list_view.dart';
export 'src/channel_name.dart';
export 'src/channel_preview.dart'; export 'src/channel_preview.dart';
export 'src/message_input.dart'; export 'src/message_input.dart';
export 'src/message_list_view.dart'; export 'src/message_list_view.dart';
export 'src/message_widget.dart'; export 'src/message_widget.dart';
export 'src/stream_channel.dart'; export 'src/stream_channel.dart';
export 'src/stream_chat.dart'; export 'src/stream_chat.dart';
export 'src/user_avatar.dart';