update customize_channel_preview example
This commit is contained in:
@@ -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')],
|
||||||
|
|||||||
@@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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';
|
|
||||||
|
|||||||
Reference in New Issue
Block a user