Merge branch 'master' into feature/notifications

This commit is contained in:
Salvatore Giordano
2020-05-06 09:46:43 +02:00
5 changed files with 42 additions and 16 deletions
+17 -1
View File
@@ -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
+12 -10
View File
@@ -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.
[![Pub](https://img.shields.io/pub/v/stream_chat_flutter.svg)](https://pub.dartlang.org/packages/stream_chat_flutter) [![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) ![](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) [![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)
<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.
+3 -2
View File
@@ -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(),
), ),
+2 -3
View File
@@ -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(
+8
View File
@@ -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) ?? '',