add default channel image to theme
This commit is contained in:
@@ -28,6 +28,13 @@ class MyApp extends StatelessWidget {
|
|||||||
themeMode: ThemeMode.system,
|
themeMode: ThemeMode.system,
|
||||||
home: Container(
|
home: Container(
|
||||||
child: StreamChat(
|
child: StreamChat(
|
||||||
|
streamChatThemeData: StreamChatThemeData(
|
||||||
|
defaultChannelImage: (context, channel) {
|
||||||
|
return Center(
|
||||||
|
child: Text('AAA'),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
client: client,
|
client: client,
|
||||||
child: ChannelListPage(),
|
child: ChannelListPage(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
.channelHeaderTheme
|
.channelHeaderTheme
|
||||||
.lastMessageAt,
|
.lastMessageAt,
|
||||||
)
|
)
|
||||||
: Container();
|
: SizedBox();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,8 @@ class ChannelImage extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
)
|
)
|
||||||
: SizedBox(),
|
: StreamChatTheme.of(context)
|
||||||
|
.defaultChannelImage(context, channel),
|
||||||
Material(
|
Material(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ class StreamChatState extends State<StreamChat>
|
|||||||
final defaultTheme = StreamChatThemeData.getDefaultTheme(Theme.of(context));
|
final defaultTheme = StreamChatThemeData.getDefaultTheme(Theme.of(context));
|
||||||
final theme = defaultTheme.copyWith(
|
final theme = defaultTheme.copyWith(
|
||||||
primaryColor: themeData?.primaryColor,
|
primaryColor: themeData?.primaryColor,
|
||||||
|
defaultChannelImage: themeData?.defaultChannelImage,
|
||||||
channelTheme: defaultTheme.channelTheme.copyWith(
|
channelTheme: defaultTheme.channelTheme.copyWith(
|
||||||
channelHeaderTheme:
|
channelHeaderTheme:
|
||||||
defaultTheme.channelTheme.channelHeaderTheme.copyWith(
|
defaultTheme.channelTheme.channelHeaderTheme.copyWith(
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.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';
|
||||||
import 'package:stream_chat_flutter/src/channel_preview.dart';
|
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';
|
||||||
@@ -50,6 +51,9 @@ class StreamChatThemeData {
|
|||||||
/// Theme of other users messages
|
/// Theme of other users messages
|
||||||
final MessageTheme otherMessageTheme;
|
final MessageTheme otherMessageTheme;
|
||||||
|
|
||||||
|
/// The widget that will be built when the channel image is unavailable
|
||||||
|
final Widget Function(BuildContext, Channel) defaultChannelImage;
|
||||||
|
|
||||||
/// Create a theme from scratch
|
/// Create a theme from scratch
|
||||||
StreamChatThemeData({
|
StreamChatThemeData({
|
||||||
this.primaryColor,
|
this.primaryColor,
|
||||||
@@ -59,6 +63,7 @@ class StreamChatThemeData {
|
|||||||
this.channelTheme,
|
this.channelTheme,
|
||||||
this.otherMessageTheme,
|
this.otherMessageTheme,
|
||||||
this.ownMessageTheme,
|
this.ownMessageTheme,
|
||||||
|
this.defaultChannelImage,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// Create a theme from a Material [Theme]
|
/// Create a theme from a Material [Theme]
|
||||||
@@ -97,11 +102,13 @@ class StreamChatThemeData {
|
|||||||
ChannelTheme channelTheme,
|
ChannelTheme channelTheme,
|
||||||
MessageTheme ownMessageTheme,
|
MessageTheme ownMessageTheme,
|
||||||
MessageTheme otherMessageTheme,
|
MessageTheme otherMessageTheme,
|
||||||
|
Widget Function(BuildContext, Channel) defaultChannelImage,
|
||||||
}) =>
|
}) =>
|
||||||
StreamChatThemeData(
|
StreamChatThemeData(
|
||||||
primaryColor: primaryColor ?? this.primaryColor,
|
primaryColor: primaryColor ?? this.primaryColor,
|
||||||
secondaryColor: secondaryColor ?? this.secondaryColor,
|
secondaryColor: secondaryColor ?? this.secondaryColor,
|
||||||
accentColor: accentColor ?? this.accentColor,
|
accentColor: accentColor ?? this.accentColor,
|
||||||
|
defaultChannelImage: defaultChannelImage ?? this.defaultChannelImage,
|
||||||
channelPreviewTheme: channelPreviewTheme?.copyWith(
|
channelPreviewTheme: channelPreviewTheme?.copyWith(
|
||||||
title:
|
title:
|
||||||
channelPreviewTheme.title ?? this.channelPreviewTheme.title,
|
channelPreviewTheme.title ?? this.channelPreviewTheme.title,
|
||||||
@@ -170,6 +177,7 @@ class StreamChatThemeData {
|
|||||||
return StreamChatThemeData(
|
return StreamChatThemeData(
|
||||||
accentColor: accentColor,
|
accentColor: accentColor,
|
||||||
primaryColor: isDark ? Colors.black : Colors.white,
|
primaryColor: isDark ? Colors.black : Colors.white,
|
||||||
|
defaultChannelImage: (context, channel) => SizedBox(),
|
||||||
channelPreviewTheme: ChannelPreviewTheme(
|
channelPreviewTheme: ChannelPreviewTheme(
|
||||||
avatarTheme: AvatarTheme(
|
avatarTheme: AvatarTheme(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
|||||||
Reference in New Issue
Block a user