use random pngs

This commit is contained in:
Salvatore Giordano
2020-11-11 12:16:05 +01:00
parent 7c1c002429
commit d24a74be78
3 changed files with 16 additions and 22 deletions
+5 -3
View File
@@ -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(
+6 -19
View File
@@ -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)
+5
View File
@@ -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}';