Merge branch 'master' into feature/notifications
This commit is contained in:
+17
-1
@@ -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`
|
Added some parameters to `MessageInput`
|
||||||
- add actions parameter
|
- add actions parameter
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
# Flutter Chat Components
|
# Official Flutter SDK for [Stream Chat](https://getstream.io/chat/)
|
||||||
|
|
||||||
<a href="https://getstream.io/chat/"><img src="https://i.imgur.com/L4Mj8S2.png" alt="Flutter Chat" /></a>
|
<p align="center">
|
||||||
|
<a href="https://getstream.io/tutorials/ios-chat/"><img src="https://i.imgur.com/L4Mj8S2.png" alt="Flutter Chat" width="60%" /></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
> The official Flutter components for Stream Chat, a service for
|
> The official Flutter components for Stream Chat, a service for
|
||||||
> building chat applications.
|
> building chat applications.
|
||||||
|
|
||||||
[](https://pub.dartlang.org/packages/stream_chat_flutter)
|
[](https://pub.dartlang.org/packages/stream_chat_flutter)
|
||||||

|

|
||||||

|
|
||||||
[](https://codecov.io/gh/GetStream/stream-chat-flutter)
|
|
||||||
[](https://gitter.im/GetStream/stream-chat-flutter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
[](https://gitter.im/GetStream/stream-chat-flutter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
|
|
||||||
|
<img align="right" src="https://getstream.imgix.net/images/ios-chat-tutorial/iphone_chat_art@1x.png?auto=format,enhance" width="50%" />
|
||||||
|
|
||||||
**Quick Links**
|
**Quick Links**
|
||||||
|
|
||||||
- [Register](https://getstream.io/chat/trial/) to get an API key for Stream Chat
|
- [Register](https://getstream.io/chat/trial/) to get an API key for Stream Chat
|
||||||
@@ -20,7 +22,7 @@
|
|||||||
## Flutter Chat Tutorial
|
## Flutter Chat Tutorial
|
||||||
|
|
||||||
The best place to start is the [Flutter Chat Tutorial](https://getstream.io/chat/flutter/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
|
## 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.
|
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.
|
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.
|
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.
|
Follow [these instructions](https://pub.dev/packages/image_picker#ios) to check the requirements.
|
||||||
|
|
||||||
## Docs
|
## Docs
|
||||||
@@ -87,10 +89,10 @@ Every widget uses the `StreamChat` or `StreamChannel` widgets to manage the stat
|
|||||||
|
|
||||||
### Customizing styles
|
### 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.
|
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
|
1. Initialize the `StreamChatTheme` from your existing `MaterialApp` style
|
||||||
```dart
|
```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,
|
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.
|
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.
|
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.
|
See our license file for more details.
|
||||||
|
|||||||
@@ -87,12 +87,13 @@ class MyApp extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final theme = ThemeData();
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
theme: ThemeData.light(),
|
theme: theme,
|
||||||
darkTheme: ThemeData.dark(),
|
|
||||||
themeMode: ThemeMode.system,
|
themeMode: ThemeMode.system,
|
||||||
home: Container(
|
home: Container(
|
||||||
child: StreamChat(
|
child: StreamChat(
|
||||||
|
streamChatThemeData: StreamChatThemeData.fromTheme(theme),
|
||||||
client: client,
|
client: client,
|
||||||
child: ChannelListPage(),
|
child: ChannelListPage(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -72,14 +72,12 @@ class StreamChatState extends State<StreamChat> with WidgetsBindingObserver {
|
|||||||
child: Builder(
|
child: Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final materialTheme = Theme.of(context);
|
final materialTheme = Theme.of(context);
|
||||||
final isDark = materialTheme.brightness == Brightness.dark;
|
|
||||||
final streamTheme = StreamChatTheme.of(context);
|
final streamTheme = StreamChatTheme.of(context);
|
||||||
return Theme(
|
return Theme(
|
||||||
data: materialTheme.copyWith(
|
data: materialTheme.copyWith(
|
||||||
primaryIconTheme: streamTheme.primaryIconTheme,
|
primaryIconTheme: streamTheme.primaryIconTheme,
|
||||||
accentColor: streamTheme.accentColor,
|
accentColor: streamTheme.accentColor,
|
||||||
scaffoldBackgroundColor: isDark ? Colors.black : Colors.white,
|
scaffoldBackgroundColor: streamTheme.backgroundColor,
|
||||||
backgroundColor: isDark ? Colors.black : Colors.white,
|
|
||||||
),
|
),
|
||||||
child: WillPopScope(
|
child: WillPopScope(
|
||||||
onWillPop: () async {
|
onWillPop: () async {
|
||||||
@@ -117,6 +115,7 @@ class StreamChatState extends State<StreamChat> with WidgetsBindingObserver {
|
|||||||
defaultChannelImage: themeData?.defaultChannelImage,
|
defaultChannelImage: themeData?.defaultChannelImage,
|
||||||
primaryIconTheme: themeData?.primaryIconTheme,
|
primaryIconTheme: themeData?.primaryIconTheme,
|
||||||
defaultUserImage: themeData?.defaultUserImage,
|
defaultUserImage: themeData?.defaultUserImage,
|
||||||
|
backgroundColor: themeData?.backgroundColor,
|
||||||
channelTheme: defaultTheme.channelTheme.copyWith(
|
channelTheme: defaultTheme.channelTheme.copyWith(
|
||||||
channelHeaderTheme:
|
channelHeaderTheme:
|
||||||
defaultTheme.channelTheme.channelHeaderTheme.copyWith(
|
defaultTheme.channelTheme.channelHeaderTheme.copyWith(
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ class StreamChatThemeData {
|
|||||||
/// Accent color of the chat widgets
|
/// Accent color of the chat widgets
|
||||||
final Color accentColor;
|
final Color accentColor;
|
||||||
|
|
||||||
|
/// Background color of the chat widgets
|
||||||
|
final Color backgroundColor;
|
||||||
|
|
||||||
/// Theme of the [ChannelPreview]
|
/// Theme of the [ChannelPreview]
|
||||||
final ChannelPreviewTheme channelPreviewTheme;
|
final ChannelPreviewTheme channelPreviewTheme;
|
||||||
|
|
||||||
@@ -65,6 +68,7 @@ class StreamChatThemeData {
|
|||||||
this.primaryColor,
|
this.primaryColor,
|
||||||
this.secondaryColor,
|
this.secondaryColor,
|
||||||
this.accentColor,
|
this.accentColor,
|
||||||
|
this.backgroundColor,
|
||||||
this.channelPreviewTheme,
|
this.channelPreviewTheme,
|
||||||
this.channelTheme,
|
this.channelTheme,
|
||||||
this.otherMessageTheme,
|
this.otherMessageTheme,
|
||||||
@@ -83,6 +87,7 @@ class StreamChatThemeData {
|
|||||||
primaryIconTheme: theme.primaryIconTheme,
|
primaryIconTheme: theme.primaryIconTheme,
|
||||||
primaryColor: theme.colorScheme.primary,
|
primaryColor: theme.colorScheme.primary,
|
||||||
secondaryColor: theme.colorScheme.secondary,
|
secondaryColor: theme.colorScheme.secondary,
|
||||||
|
backgroundColor: theme.scaffoldBackgroundColor,
|
||||||
channelTheme: ChannelTheme(
|
channelTheme: ChannelTheme(
|
||||||
inputGradient: LinearGradient(colors: [
|
inputGradient: LinearGradient(colors: [
|
||||||
theme.accentColor.withOpacity(.5),
|
theme.accentColor.withOpacity(.5),
|
||||||
@@ -107,6 +112,7 @@ class StreamChatThemeData {
|
|||||||
Color primaryColor,
|
Color primaryColor,
|
||||||
Color secondaryColor,
|
Color secondaryColor,
|
||||||
Color accentColor,
|
Color accentColor,
|
||||||
|
Color backgroundColor,
|
||||||
ChannelPreviewTheme channelPreviewTheme,
|
ChannelPreviewTheme channelPreviewTheme,
|
||||||
ChannelTheme channelTheme,
|
ChannelTheme channelTheme,
|
||||||
MessageTheme ownMessageTheme,
|
MessageTheme ownMessageTheme,
|
||||||
@@ -122,6 +128,7 @@ class StreamChatThemeData {
|
|||||||
accentColor: accentColor ?? this.accentColor,
|
accentColor: accentColor ?? this.accentColor,
|
||||||
defaultChannelImage: defaultChannelImage ?? this.defaultChannelImage,
|
defaultChannelImage: defaultChannelImage ?? this.defaultChannelImage,
|
||||||
defaultUserImage: defaultUserImage ?? this.defaultUserImage,
|
defaultUserImage: defaultUserImage ?? this.defaultUserImage,
|
||||||
|
backgroundColor: backgroundColor ?? this.backgroundColor,
|
||||||
channelPreviewTheme: channelPreviewTheme?.copyWith(
|
channelPreviewTheme: channelPreviewTheme?.copyWith(
|
||||||
title:
|
title:
|
||||||
channelPreviewTheme.title ?? this.channelPreviewTheme.title,
|
channelPreviewTheme.title ?? this.channelPreviewTheme.title,
|
||||||
@@ -193,6 +200,7 @@ class StreamChatThemeData {
|
|||||||
primaryIconTheme:
|
primaryIconTheme:
|
||||||
IconThemeData(color: isDark ? Colors.white : Colors.black),
|
IconThemeData(color: isDark ? Colors.white : Colors.black),
|
||||||
defaultChannelImage: (context, channel) => SizedBox(),
|
defaultChannelImage: (context, channel) => SizedBox(),
|
||||||
|
backgroundColor: isDark ? Colors.black : Colors.white,
|
||||||
defaultUserImage: (context, user) => Center(
|
defaultUserImage: (context, user) => Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
user.name?.substring(0, 1) ?? '',
|
user.name?.substring(0, 1) ?? '',
|
||||||
|
|||||||
Reference in New Issue
Block a user