fix(ui): fix quoted message scroll
This commit is contained in:
+2
-2
@@ -323,9 +323,9 @@ class _PositionedListState extends State<PositionedList> {
|
|||||||
final positions = <ItemPosition>[];
|
final positions = <ItemPosition>[];
|
||||||
RenderViewport? viewport;
|
RenderViewport? viewport;
|
||||||
for (final element in registeredElements.value!) {
|
for (final element in registeredElements.value!) {
|
||||||
final box = element.renderObject as RenderBox;
|
final box = element.renderObject as RenderBox?;
|
||||||
viewport ??= RenderAbstractViewport.of(box) as RenderViewport?;
|
viewport ??= RenderAbstractViewport.of(box) as RenderViewport?;
|
||||||
if (viewport == null) {
|
if (viewport == null || box == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
final key = element.widget.key as IndexedKey;
|
final key = element.widget.key as IndexedKey;
|
||||||
|
|||||||
@@ -1062,8 +1062,7 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
showSendingIndicator: showSendingIndicator,
|
showSendingIndicator: showSendingIndicator,
|
||||||
showUserAvatar: showUserAvatar,
|
showUserAvatar: showUserAvatar,
|
||||||
onQuotedMessageTap: (quotedMessageId) async {
|
onQuotedMessageTap: (quotedMessageId) async {
|
||||||
// ignore: prefer_function_declarations_over_variables
|
if (messages.map((e) => e.id).contains(quotedMessageId)) {
|
||||||
final scrollToIndex = () {
|
|
||||||
final index = messages.indexWhere((m) => m.id == quotedMessageId);
|
final index = messages.indexWhere((m) => m.id == quotedMessageId);
|
||||||
_scrollController?.scrollTo(
|
_scrollController?.scrollTo(
|
||||||
index: index + 2, // +2 to account for loader and footer
|
index: index + 2, // +2 to account for loader and footer
|
||||||
@@ -1071,16 +1070,12 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
curve: Curves.easeInOut,
|
curve: Curves.easeInOut,
|
||||||
alignment: 0.1,
|
alignment: 0.1,
|
||||||
);
|
);
|
||||||
};
|
|
||||||
if (messages.map((e) => e.id).contains(quotedMessageId)) {
|
|
||||||
scrollToIndex();
|
|
||||||
} else {
|
} else {
|
||||||
await streamChannel!.loadChannelAtMessage(quotedMessageId).then((_) {
|
await streamChannel!
|
||||||
WidgetsBinding.instance!.addPostFrameCallback((_) {
|
.loadChannelAtMessage(quotedMessageId)
|
||||||
if (messages.map((e) => e.id).contains(quotedMessageId)) {
|
.then((_) async {
|
||||||
scrollToIndex();
|
initialIndex = 21; // 19 + 2 | 19 is the index of the message
|
||||||
}
|
initialAlignment = 0.1;
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user