From 069ec910a6013c3e5302b54c5f7f3689a105132f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 20 Jul 2021 10:54:20 +0200 Subject: [PATCH 1/7] feat: add MessageListView.reverse property --- .../example/android/app/build.gradle | 4 ++-- .../example/android/build.gradle | 4 ++-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../lib/src/message_list_view.dart | 21 +++++++++++++++---- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/stream_chat_flutter/example/android/app/build.gradle b/packages/stream_chat_flutter/example/android/app/build.gradle index 9bb36eac..fbd6268e 100644 --- a/packages/stream_chat_flutter/example/android/app/build.gradle +++ b/packages/stream_chat_flutter/example/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 29 + compileSdkVersion 30 sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -41,7 +41,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.example" minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/packages/stream_chat_flutter/example/android/build.gradle b/packages/stream_chat_flutter/example/android/build.gradle index 9afae7f8..3e0873de 100644 --- a/packages/stream_chat_flutter/example/android/build.gradle +++ b/packages/stream_chat_flutter/example/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.5.20' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.2' + classpath 'com.android.tools.build:gradle:4.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/packages/stream_chat_flutter/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/stream_chat_flutter/example/android/gradle/wrapper/gradle-wrapper.properties index 493072b3..3df6b338 100644 --- a/packages/stream_chat_flutter/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/stream_chat_flutter/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 822a2f5a..505fc097 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -1,5 +1,6 @@ // ignore_for_file: lines_longer_than_80_chars import 'dart:async'; +import 'dart:math'; import 'package:collection/collection.dart'; import 'package:flutter/cupertino.dart'; @@ -166,11 +167,19 @@ class MessageListView extends StatefulWidget { this.showFloatingDateDivider = true, this.threadSeparatorBuilder, this.messageListController, + this.reverse = false, }) : super(key: key); /// Function used to build a custom message widget final MessageBuilder? messageBuilder; + /// Whether the view scrolls in the reading direction. + /// + /// Defaults to true. + /// + /// See [ScrollView.reverse]. + final bool reverse; + /// Function used to build a custom system message widget final SystemMessageBuilder? systemMessageBuilder; @@ -445,7 +454,7 @@ class _MessageListViewState extends State { initialAlignment: initialAlignment ?? 0, physics: widget.scrollPhysics, itemScrollController: _scrollController, - reverse: true, + reverse: widget.reverse, addAutomaticKeepAlives: false, itemCount: itemCount, @@ -608,7 +617,8 @@ class _MessageListViewState extends State { } Positioned _buildFloatingDateDivider(int itemCount) => Positioned( - top: 20, + top: widget.reverse ? 20 : null, + bottom: widget.reverse ? null : 20, child: BetterStreamBuilder>( initialData: _itemPositionListener.itemPositions.value, stream: _itemPositionStream, @@ -700,8 +710,11 @@ class _MessageListViewState extends State { ); } }, - child: StreamSvgIcon.down( - color: _streamTheme.colorTheme.textHighEmphasis, + child: Transform.rotate( + angle: widget.reverse ? 0 : pi, + child: StreamSvgIcon.down( + color: _streamTheme.colorTheme.textHighEmphasis, + ), ), ), if (showUnreadCount) From a8fc76c85f3c0ec98e76c923ae26eb4eaaf0b5e9 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 20 Jul 2021 10:55:06 +0200 Subject: [PATCH 2/7] update changelog --- packages/stream_chat_flutter/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index e606d32d..c4c8e10c 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## Upcoming + +✅ Added + +- Added `MessageListView.reverse` property + ## 2.0.0 🛑️ Breaking Changes from `1.5.4` From dff0ad9af27cd198eb011347df45605253922e83 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 20 Jul 2021 10:55:25 +0200 Subject: [PATCH 3/7] fix default --- packages/stream_chat_flutter/lib/src/message_list_view.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 505fc097..a344ceb4 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -167,7 +167,7 @@ class MessageListView extends StatefulWidget { this.showFloatingDateDivider = true, this.threadSeparatorBuilder, this.messageListController, - this.reverse = false, + this.reverse = true, }) : super(key: key); /// Function used to build a custom message widget From ab35409b15ac7c84462e8dc59e0c2d7776179d8d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 20 Jul 2021 11:17:12 +0200 Subject: [PATCH 4/7] use up svg icon --- .../lib/src/message_list_view.dart | 13 +++++++------ .../lib/src/stream_svg_icon.dart | 12 ++++++++++++ packages/stream_chat_flutter/lib/svgs/Icon_up.svg | 3 +++ 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/svgs/Icon_up.svg diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index a344ceb4..74933321 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -710,12 +710,13 @@ class _MessageListViewState extends State { ); } }, - child: Transform.rotate( - angle: widget.reverse ? 0 : pi, - child: StreamSvgIcon.down( - color: _streamTheme.colorTheme.textHighEmphasis, - ), - ), + child: widget.reverse + ? StreamSvgIcon.down( + color: _streamTheme.colorTheme.textHighEmphasis, + ) + : StreamSvgIcon.up( + color: _streamTheme.colorTheme.textHighEmphasis, + ), ), if (showUnreadCount) Positioned( diff --git a/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart b/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart index fb5017e1..73c33131 100644 --- a/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart +++ b/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart @@ -37,6 +37,18 @@ class StreamSvgIcon extends StatelessWidget { height: size, ); + /// [StreamSvgIcon] type + factory StreamSvgIcon.up({ + double? size, + Color? color, + }) => + StreamSvgIcon( + assetName: 'Icon_up.svg', + color: color, + width: size, + height: size, + ); + /// [StreamSvgIcon] type factory StreamSvgIcon.attach({ double? size, diff --git a/packages/stream_chat_flutter/lib/svgs/Icon_up.svg b/packages/stream_chat_flutter/lib/svgs/Icon_up.svg new file mode 100644 index 00000000..d3d53810 --- /dev/null +++ b/packages/stream_chat_flutter/lib/svgs/Icon_up.svg @@ -0,0 +1,3 @@ + + + From 293cb927c12cad0f5a9d2d58abf92ae5bc87546c Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 20 Jul 2021 12:14:09 +0200 Subject: [PATCH 5/7] fix icon --- packages/stream_chat_flutter/lib/svgs/Icon_up.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/svgs/Icon_up.svg b/packages/stream_chat_flutter/lib/svgs/Icon_up.svg index d3d53810..60e6888f 100644 --- a/packages/stream_chat_flutter/lib/svgs/Icon_up.svg +++ b/packages/stream_chat_flutter/lib/svgs/Icon_up.svg @@ -1,3 +1,3 @@ - - + + From 6794bde9e496b567ef2fff3273b8f0c78881fd81 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 20 Jul 2021 12:39:08 +0200 Subject: [PATCH 6/7] fix analyzer --- packages/stream_chat_flutter/lib/src/message_list_view.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 74933321..942d02f5 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -1,6 +1,5 @@ // ignore_for_file: lines_longer_than_80_chars import 'dart:async'; -import 'dart:math'; import 'package:collection/collection.dart'; import 'package:flutter/cupertino.dart'; From 30f021c3816991caf8743e258bc5e2504c83f8fa Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 22 Jul 2021 12:08:12 +0200 Subject: [PATCH 7/7] flutter format --- packages/stream_chat_flutter/lib/src/message_list_view.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 0a0ac78e..cdc088f0 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -179,7 +179,7 @@ class MessageListView extends StatefulWidget { /// /// See [ScrollView.reverse]. final bool reverse; - + /// Limit used during pagination final int paginationLimit;