[MessageListView] fix onQuotedMessageTap

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-01-05 11:19:51 +05:30
parent 1424c56dd5
commit ed6213e938
2 changed files with 166 additions and 158 deletions
+12 -3
View File
@@ -775,15 +775,24 @@ class _MessageListViewState extends State<MessageListView> {
bottom: index == 0 ? 30 : (isNextUser ? 2 : 7),
top: 3,
),
onQuotedMessageTap: (quotedMessageId) {
if (messages.map((e) => e.id).contains(quotedMessageId)) {
onQuotedMessageTap: (quotedMessageId) async {
final scrollToIndex = () {
final index = messages.indexWhere((m) => m.id == quotedMessageId);
_scrollController?.scrollTo(
index: index,
duration: const Duration(milliseconds: 350),
);
};
if (messages.map((e) => e.id).contains(quotedMessageId)) {
scrollToIndex();
} else {
streamChannel.loadChannelAtMessage(quotedMessageId);
streamChannel.loadChannelAtMessage(quotedMessageId).then((_) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (messages.map((e) => e.id).contains(quotedMessageId)) {
scrollToIndex();
}
});
});
}
},
showInChannelIndicator: widget.parentMessage == null,
+13 -14
View File
@@ -287,11 +287,10 @@ class _MessageWidgetState extends State<MessageWidget> {
widget.message.attachments?.any((element) => element.type == 'file') ==
true;
final isMyMessage =
widget.message.user.id == StreamChat.of(context).user.id;
return Portal(
child: GestureDetector(
return Material(
type: MaterialType.transparency,
child: Portal(
child: InkWell(
onLongPress: () => onLongPress(context),
child: Padding(
padding: widget.padding ?? EdgeInsets.all(8),
@@ -363,14 +362,16 @@ class _MessageWidgetState extends State<MessageWidget> {
reverse: widget.reverse,
borderRadiusGeometry: widget
.borderRadiusGeometry,
borderSide: widget.borderSide,
borderSide:
widget.borderSide,
shape: widget.shape,
messageTheme:
widget.messageTheme,
),
)
: Material(
: Card(
clipBehavior: Clip.antiAlias,
elevation: 0.0,
shape: widget.shape ??
RoundedRectangleBorder(
side: isOnlyEmoji
@@ -399,9 +400,6 @@ class _MessageWidgetState extends State<MessageWidget> {
BorderRadius.zero,
),
color: _getBackgroundColor(),
child: InkWell(
onLongPress: () =>
onLongPress(context),
child: Padding(
padding: EdgeInsets.all(
hasFiles ? 2.0 : 0.0),
@@ -413,8 +411,7 @@ class _MessageWidgetState extends State<MessageWidget> {
MainAxisSize.min,
children: <Widget>[
if (_hasQuotedMessage)
_buildQuotedMessage(
isMyMessage),
_buildQuotedMessage(),
..._parseAttachments(
context),
if (widget.message.text
@@ -428,7 +425,6 @@ class _MessageWidgetState extends State<MessageWidget> {
),
),
),
),
if (widget.showReactionPickerIndicator)
Positioned(
right: 0,
@@ -477,10 +473,13 @@ class _MessageWidgetState extends State<MessageWidget> {
),
),
),
),
);
}
Widget _buildQuotedMessage(bool isMyMessage) {
Widget _buildQuotedMessage() {
final isMyMessage =
widget.message.user.id == StreamChat.of(context).user.id;
return QuotedMessageWidget(
onTap: () {
if (widget.onQuotedMessageTap != null) {