StreamChatThemeData constructor

StreamChatThemeData({
  1. Brightness? brightness,
  2. StreamTextTheme? textTheme,
  3. StreamColorTheme? colorTheme,
  4. StreamChannelListHeaderThemeData? channelListHeaderTheme,
  5. StreamChannelPreviewThemeData? channelPreviewTheme,
  6. StreamChannelHeaderThemeData? channelHeaderTheme,
  7. StreamMessageThemeData? otherMessageTheme,
  8. StreamMessageThemeData? ownMessageTheme,
  9. StreamMessageInputThemeData? messageInputTheme,
  10. Widget defaultUserImage(
    1. BuildContext,
    2. User
    )?,
  11. PlaceholderUserImage? placeholderUserImage,
  12. IconThemeData? primaryIconTheme,
  13. List<StreamReactionIcon>? reactionIcons,
  14. StreamGalleryHeaderThemeData? imageHeaderTheme,
  15. StreamGalleryFooterThemeData? imageFooterTheme,
  16. StreamMessageListViewThemeData? messageListViewTheme,
})

Creates a theme from scratch

Implementation

factory StreamChatThemeData({
  Brightness? brightness,
  StreamTextTheme? textTheme,
  StreamColorTheme? colorTheme,
  StreamChannelListHeaderThemeData? channelListHeaderTheme,
  StreamChannelPreviewThemeData? channelPreviewTheme,
  StreamChannelHeaderThemeData? channelHeaderTheme,
  StreamMessageThemeData? otherMessageTheme,
  StreamMessageThemeData? ownMessageTheme,
  StreamMessageInputThemeData? messageInputTheme,
  Widget Function(BuildContext, User)? defaultUserImage,
  PlaceholderUserImage? placeholderUserImage,
  IconThemeData? primaryIconTheme,
  List<StreamReactionIcon>? reactionIcons,
  StreamGalleryHeaderThemeData? imageHeaderTheme,
  StreamGalleryFooterThemeData? imageFooterTheme,
  StreamMessageListViewThemeData? messageListViewTheme,
}) {
  brightness ??= colorTheme?.brightness ?? Brightness.light;
  final isDark = brightness == Brightness.dark;
  textTheme ??= isDark ? StreamTextTheme.dark() : StreamTextTheme.light();
  colorTheme ??= isDark ? StreamColorTheme.dark() : StreamColorTheme.light();

  final defaultData = StreamChatThemeData.fromColorAndTextTheme(
    colorTheme,
    textTheme,
  );

  final customizedData = defaultData.copyWith(
    channelListHeaderTheme: channelListHeaderTheme,
    channelPreviewTheme: channelPreviewTheme,
    channelHeaderTheme: channelHeaderTheme,
    otherMessageTheme: otherMessageTheme,
    ownMessageTheme: ownMessageTheme,
    messageInputTheme: messageInputTheme,
    defaultUserImage: defaultUserImage,
    placeholderUserImage: placeholderUserImage,
    primaryIconTheme: primaryIconTheme,
    reactionIcons: reactionIcons,
    galleryHeaderTheme: imageHeaderTheme,
    galleryFooterTheme: imageFooterTheme,
    messageListViewTheme: messageListViewTheme,
  );

  return defaultData.merge(customizedData);
}