use random pngs
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:stream_chat/stream_chat.dart';
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
import 'package:stream_chat_flutter/src/channel_header.dart';
|
import 'package:stream_chat_flutter/src/channel_header.dart';
|
||||||
@@ -5,6 +6,7 @@ import 'package:stream_chat_flutter/src/channel_preview.dart';
|
|||||||
import 'package:stream_chat_flutter/src/message_input.dart';
|
import 'package:stream_chat_flutter/src/message_input.dart';
|
||||||
import 'package:stream_chat_flutter/src/reaction_icon.dart';
|
import 'package:stream_chat_flutter/src/reaction_icon.dart';
|
||||||
import 'package:stream_chat_flutter/src/stream_icons.dart';
|
import 'package:stream_chat_flutter/src/stream_icons.dart';
|
||||||
|
import 'package:stream_chat_flutter/src/utils.dart';
|
||||||
|
|
||||||
/// Inherited widget providing the [StreamChatThemeData] to the widget tree
|
/// Inherited widget providing the [StreamChatThemeData] to the widget tree
|
||||||
class StreamChatTheme extends InheritedWidget {
|
class StreamChatTheme extends InheritedWidget {
|
||||||
@@ -226,9 +228,9 @@ class StreamChatThemeData {
|
|||||||
defaultChannelImage: (context, channel) => SizedBox(),
|
defaultChannelImage: (context, channel) => SizedBox(),
|
||||||
backgroundColor: isDark ? Colors.black : Colors.white,
|
backgroundColor: isDark ? Colors.black : Colors.white,
|
||||||
defaultUserImage: (context, user) => Center(
|
defaultUserImage: (context, user) => Center(
|
||||||
child: Text(
|
child: CachedNetworkImage(
|
||||||
user.name?.substring(0, 1) ?? '',
|
imageUrl: getRandomPicUrl(user),
|
||||||
style: TextStyle(color: Colors.white),
|
fit: BoxFit.cover,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
channelPreviewTheme: ChannelPreviewTheme(
|
channelPreviewTheme: ChannelPreviewTheme(
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class UserAvatar extends StatelessWidget {
|
|||||||
final hasImage = user.extraData?.containsKey('image') == true &&
|
final hasImage = user.extraData?.containsKey('image') == true &&
|
||||||
user.extraData['image'] != null &&
|
user.extraData['image'] != null &&
|
||||||
user.extraData['image'] != '';
|
user.extraData['image'] != '';
|
||||||
|
final streamChatTheme = StreamChatTheme.of(context);
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: onTap != null
|
onTap: onTap != null
|
||||||
? () {
|
? () {
|
||||||
@@ -39,36 +40,22 @@ class UserAvatar extends StatelessWidget {
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
ClipRRect(
|
ClipRRect(
|
||||||
borderRadius: borderRadius ??
|
borderRadius: borderRadius ??
|
||||||
StreamChatTheme.of(context)
|
streamChatTheme.ownMessageTheme.avatarTheme.borderRadius,
|
||||||
.ownMessageTheme
|
|
||||||
.avatarTheme
|
|
||||||
.borderRadius,
|
|
||||||
child: Container(
|
child: Container(
|
||||||
constraints: constraints ??
|
constraints: constraints ??
|
||||||
StreamChatTheme.of(context)
|
streamChatTheme.ownMessageTheme.avatarTheme.constraints,
|
||||||
.ownMessageTheme
|
|
||||||
.avatarTheme
|
|
||||||
.constraints,
|
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: StreamChatTheme.of(context).accentColor,
|
color: streamChatTheme.accentColor,
|
||||||
),
|
),
|
||||||
child: hasImage
|
child: hasImage
|
||||||
? CachedNetworkImage(
|
? CachedNetworkImage(
|
||||||
imageUrl: user.extraData['image'],
|
imageUrl: user.extraData['image'],
|
||||||
errorWidget: (_, __, ___) {
|
errorWidget: (_, __, ___) {
|
||||||
return Center(
|
return streamChatTheme.defaultUserImage(context, user);
|
||||||
child: Text(
|
|
||||||
user.name[0],
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
)
|
)
|
||||||
: StreamChatTheme.of(context).defaultUserImage(context, user),
|
: streamChatTheme.defaultUserImage(context, user),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (showOnlineStatus && user.online == true)
|
if (showOnlineStatus && user.online == true)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
Future<void> launchURL(BuildContext context, String url) async {
|
Future<void> launchURL(BuildContext context, String url) async {
|
||||||
@@ -42,3 +43,7 @@ Future<bool> showConfirmationDialog(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get random png with initials
|
||||||
|
String getRandomPicUrl(User user) =>
|
||||||
|
'https://getstream.io/random_png/?id=${user.id}&name=${user.name}';
|
||||||
|
|||||||
Reference in New Issue
Block a user