diff --git a/example/ios/Flutter/.last_build_id b/example/ios/Flutter/.last_build_id index 171fde31..661f8167 100644 --- a/example/ios/Flutter/.last_build_id +++ b/example/ios/Flutter/.last_build_id @@ -1 +1 @@ -0289cdadbd29bab804f275e3c5907d07 \ No newline at end of file +89eb023669fee58472de747080d78b5a \ No newline at end of file diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 9a6554e6..cb0eca8e 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,6 +1,6 @@ name: example description: A new Flutter project. -version: 1.0.31+33 +version: 1.0.32+34 environment: sdk: ">=2.2.2 <3.0.0" diff --git a/lib/src/message_list_view.dart b/lib/src/message_list_view.dart index da260b0e..bb0f98c0 100644 --- a/lib/src/message_list_view.dart +++ b/lib/src/message_list_view.dart @@ -157,7 +157,9 @@ class _MessageListViewState extends State { /// TODO: find a better solution when (https://github.com/flutter/flutter/issues/21023) is fixed return WidgetsVisibilityProvider( - condition: (c) => null, + condition: (positionData) => + positionData.endPosition >= 20 && + positionData.startPosition <= positionData.viewportSize, child: Stack( alignment: Alignment.center, children: [ @@ -257,14 +259,24 @@ class _MessageListViewState extends State { if (nextMessage != null && !Jiffy(message.createdAt.toLocal()) .isSame(nextMessage.createdAt.toLocal(), Units.DAY)) { - return VisibleNotifierWidget( - data: i, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - messageWidget, - Padding( - padding: const EdgeInsets.symmetric(vertical: 12.0), + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + messageWidget, + Padding( + padding: const EdgeInsets.symmetric(vertical: 12.0), + child: VisibleNotifierWidget( + condition: ( + ScrollNotification previousNotification, + PositionData previousPositionData, + ScrollNotification currentNotification, + PositionData currentPositionData, + ) { + print( + 'currentPositionData.endPosition: ${currentPositionData.endPosition}'); + return true; + }, + data: i, child: widget.dateDividerBuilder != null ? widget.dateDividerBuilder( nextMessage.createdAt.toLocal()) @@ -272,8 +284,8 @@ class _MessageListViewState extends State { dateTime: nextMessage.createdAt.toLocal(), ), ), - ], - ), + ), + ], ); } @@ -307,14 +319,20 @@ class _MessageListViewState extends State { Positioned( top: 20.0, child: WidgetsVisibilityConsumer( - listener: (context, event,) {}, + listener: ( + context, + event, + ) {}, builder: (context, event) { - if(event.positionDataList == null || event.positionDataList.isEmpty) { + if (event.positionDataList == null || + event.positionDataList.isEmpty) { return Container(); } return DateDivider( - dateTime: _messages[event.positionDataList.last.data].createdAt.toLocal(), + dateTime: _messages[event.positionDataList.last.data] + .createdAt + .toLocal(), ); }, ),