jump scrollview on new messages
This commit is contained in:
@@ -164,6 +164,7 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
Function _onThreadTap;
|
Function _onThreadTap;
|
||||||
bool _showScrollToBottom = false;
|
bool _showScrollToBottom = false;
|
||||||
ItemPositionsListener _itemPositionListener;
|
ItemPositionsListener _itemPositionListener;
|
||||||
|
int messageListLength;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -203,6 +204,22 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final newMessagesListLength = messages.length;
|
||||||
|
|
||||||
|
if (_itemPositionListener.itemPositions.value?.isNotEmpty == true &&
|
||||||
|
messageListLength != null) {
|
||||||
|
final first = _itemPositionListener.itemPositions.value.first;
|
||||||
|
final diff = newMessagesListLength - messageListLength;
|
||||||
|
if (diff > 0) {
|
||||||
|
_scrollController.jumpTo(
|
||||||
|
index: first.index + diff,
|
||||||
|
alignment: first.itemLeadingEdge,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
messageListLength = newMessagesListLength;
|
||||||
|
|
||||||
return Stack(
|
return Stack(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
Reference in New Issue
Block a user