From 7d90dc0cfe4bf7b957c4ec703574468f5e2934da Mon Sep 17 00:00:00 2001 From: Efthymios Sarmpanis Date: Thu, 30 Sep 2021 01:06:41 +0300 Subject: [PATCH] feat(ui): add the ability to add a background image in MessageListView --- packages/stream_chat_flutter/CHANGELOG.md | 4 ++ .../example/assets/background_doodle.png | Bin 0 -> 158626 bytes .../example/lib/tutorial_part_6.dart | 6 ++ .../stream_chat_flutter/example/pubspec.yaml | 4 +- .../lib/src/message_list_view.dart | 10 +++- .../src/theme/message_list_view_theme.dart | 20 ++++++- .../test/src/message_list_view_test.dart | 55 +++++++++++++++++- .../theme/message_list_view_theme_test.dart | 38 ++++++++++++ 8 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 packages/stream_chat_flutter/example/assets/background_doodle.png diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index ffc30572..c67b1e7d 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -34,6 +34,10 @@ - `UserListView` `filter` property now is non-nullable. +✅ Added + +- `MessageListViewThemeData` now accepts a `DecorationImage` as a background image for `MessageListView`. + 🐞 Fixed - [[#668]](https://github.com/GetStream/stream-chat-flutter/issues/668): Fix `MessageInput` rendering errors in case diff --git a/packages/stream_chat_flutter/example/assets/background_doodle.png b/packages/stream_chat_flutter/example/assets/background_doodle.png new file mode 100644 index 0000000000000000000000000000000000000000..9ddf754f819cbf9aee379c53622d7af4b46c9d06 GIT binary patch literal 158626 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