diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fb95312..8f5faa64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,20 @@ -## 0.2.0-alpha+14 +## 0.1.35 + +- Add backgroundColor as part of StreamChatThemeData + +## 0.1.34 + +- Add `onUserAvatarTap` + +## 0.1.33 + +- Add default user and channel image to `StreamChatTheme` + +## 0.1.32 + +- Update llc version + +## 0.1.31 Added some parameters to `MessageInput` - add actions parameter diff --git a/README.md b/README.md index 52c6ef76..9049b4c0 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ -# Flutter Chat Components +# Official Flutter SDK for [Stream Chat](https://getstream.io/chat/) -Flutter Chat +

+ Flutter Chat +

> The official Flutter components for Stream Chat, a service for > building chat applications. [![Pub](https://img.shields.io/pub/v/stream_chat_flutter.svg)](https://pub.dartlang.org/packages/stream_chat_flutter) ![](https://img.shields.io/badge/platform-flutter%20%7C%20flutter%20web-ff69b4.svg?style=flat-square) -![CI](https://github.com/GetStream/stream-chat-flutter/workflows/CI/badge.svg?branch=master) -[![codecov](https://codecov.io/gh/GetStream/stream-chat-flutter/branch/master/graph/badge.svg)](https://codecov.io/gh/GetStream/stream-chat-flutter) [![Gitter](https://badges.gitter.im/GetStream/stream-chat-flutter.svg)](https://gitter.im/GetStream/stream-chat-flutter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + + **Quick Links** - [Register](https://getstream.io/chat/trial/) to get an API key for Stream Chat @@ -20,7 +22,7 @@ ## Flutter Chat Tutorial The best place to start is the [Flutter Chat Tutorial](https://getstream.io/chat/flutter/tutorial/). -It teaches you how to use this SDK and also shows how to make common changes. +It teaches you how to use this SDK and also shows how to make frequently required changes. ## Example App @@ -40,7 +42,7 @@ You should then run `flutter packages get` Use version `^0.2.0-alpha+2` to use the latest available version. -Note that this is still an alpha version. There may be some bugs and the api can change in breaking ways. +Note that this is still an alpha version. There may be some bugs, and the API can change in breaking ways. Thanks to whoever tries these versions and reports bugs or suggestions. @@ -56,7 +58,7 @@ Follow [this wiki](https://github.com/miguelpruivo/flutter_file_picker/wiki/Setu We also use [video_player](https://pub.dev/packages/video_player) to reproduce videos. Follow [this guide](https://pub.dev/packages/video_player#installation) to fulfill the requirements. -To pick images from the camera we use the [image_picker](https://pub.dev/packages/image_picker) plugin. +To pick images from the camera, we use the [image_picker](https://pub.dev/packages/image_picker) plugin. Follow [these instructions](https://pub.dev/packages/image_picker#ios) to check the requirements. ## Docs @@ -87,10 +89,10 @@ Every widget uses the `StreamChat` or `StreamChannel` widgets to manage the stat ### Customizing styles -The Flutter SDK comes with a fully designed set of widgets which you can customize to fit with your application style and typography. +The Flutter SDK comes with a fully designed set of widgets that you can customize to fit with your application style and typography. Changing the theme of Chat widgets works in a very similar way that `MaterialApp` and `Theme` do. -Out of the box all chat widgets use their own default styling, there are two ways to change the styling: +Out of the box, all chat widgets use their default styling, and there are two ways to change the styling: 1. Initialize the `StreamChatTheme` from your existing `MaterialApp` style ```dart @@ -166,6 +168,6 @@ Set the property `persistenceEnabled` to false if you don't want to use the offl We welcome code changes that improve this library or fix a problem, please make sure to follow all best practices and add tests if applicable before submitting a Pull Request on Github. -We are very happy to merge your code in the official repository. +We are pleased to merge your code into the official repository. Make sure to sign our [Contributor License Agreement (CLA)](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform) first. See our license file for more details. diff --git a/example/lib/main.dart b/example/lib/main.dart index 50a82270..137186c7 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -87,12 +87,13 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = ThemeData(); return MaterialApp( - theme: ThemeData.light(), - darkTheme: ThemeData.dark(), + theme: theme, themeMode: ThemeMode.system, home: Container( child: StreamChat( + streamChatThemeData: StreamChatThemeData.fromTheme(theme), client: client, child: ChannelListPage(), ), diff --git a/lib/src/stream_chat.dart b/lib/src/stream_chat.dart index 6d52e920..52e7ccc6 100644 --- a/lib/src/stream_chat.dart +++ b/lib/src/stream_chat.dart @@ -72,14 +72,12 @@ class StreamChatState extends State with WidgetsBindingObserver { child: Builder( builder: (context) { final materialTheme = Theme.of(context); - final isDark = materialTheme.brightness == Brightness.dark; final streamTheme = StreamChatTheme.of(context); return Theme( data: materialTheme.copyWith( primaryIconTheme: streamTheme.primaryIconTheme, accentColor: streamTheme.accentColor, - scaffoldBackgroundColor: isDark ? Colors.black : Colors.white, - backgroundColor: isDark ? Colors.black : Colors.white, + scaffoldBackgroundColor: streamTheme.backgroundColor, ), child: WillPopScope( onWillPop: () async { @@ -117,6 +115,7 @@ class StreamChatState extends State with WidgetsBindingObserver { defaultChannelImage: themeData?.defaultChannelImage, primaryIconTheme: themeData?.primaryIconTheme, defaultUserImage: themeData?.defaultUserImage, + backgroundColor: themeData?.backgroundColor, channelTheme: defaultTheme.channelTheme.copyWith( channelHeaderTheme: defaultTheme.channelTheme.channelHeaderTheme.copyWith( diff --git a/lib/src/stream_chat_theme.dart b/lib/src/stream_chat_theme.dart index acf7f4f0..5e06672e 100644 --- a/lib/src/stream_chat_theme.dart +++ b/lib/src/stream_chat_theme.dart @@ -39,6 +39,9 @@ class StreamChatThemeData { /// Accent color of the chat widgets final Color accentColor; + /// Background color of the chat widgets + final Color backgroundColor; + /// Theme of the [ChannelPreview] final ChannelPreviewTheme channelPreviewTheme; @@ -65,6 +68,7 @@ class StreamChatThemeData { this.primaryColor, this.secondaryColor, this.accentColor, + this.backgroundColor, this.channelPreviewTheme, this.channelTheme, this.otherMessageTheme, @@ -83,6 +87,7 @@ class StreamChatThemeData { primaryIconTheme: theme.primaryIconTheme, primaryColor: theme.colorScheme.primary, secondaryColor: theme.colorScheme.secondary, + backgroundColor: theme.scaffoldBackgroundColor, channelTheme: ChannelTheme( inputGradient: LinearGradient(colors: [ theme.accentColor.withOpacity(.5), @@ -107,6 +112,7 @@ class StreamChatThemeData { Color primaryColor, Color secondaryColor, Color accentColor, + Color backgroundColor, ChannelPreviewTheme channelPreviewTheme, ChannelTheme channelTheme, MessageTheme ownMessageTheme, @@ -122,6 +128,7 @@ class StreamChatThemeData { accentColor: accentColor ?? this.accentColor, defaultChannelImage: defaultChannelImage ?? this.defaultChannelImage, defaultUserImage: defaultUserImage ?? this.defaultUserImage, + backgroundColor: backgroundColor ?? this.backgroundColor, channelPreviewTheme: channelPreviewTheme?.copyWith( title: channelPreviewTheme.title ?? this.channelPreviewTheme.title, @@ -193,6 +200,7 @@ class StreamChatThemeData { primaryIconTheme: IconThemeData(color: isDark ? Colors.white : Colors.black), defaultChannelImage: (context, channel) => SizedBox(), + backgroundColor: isDark ? Colors.black : Colors.white, defaultUserImage: (context, user) => Center( child: Text( user.name?.substring(0, 1) ?? '',