From 7cb3d449c2a89e07794938263e7cebdbf392dd89 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 17 May 2021 14:32:23 +0200 Subject: [PATCH] fix image group navigation --- packages/stream_chat_flutter/lib/src/image_group.dart | 9 +++++++-- .../stream_chat_flutter/lib/src/message_list_view.dart | 6 +++--- packages/stream_chat_flutter/lib/src/message_widget.dart | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/image_group.dart b/packages/stream_chat_flutter/lib/src/image_group.dart index 51c686c3..4647fe57 100644 --- a/packages/stream_chat_flutter/lib/src/image_group.dart +++ b/packages/stream_chat_flutter/lib/src/image_group.dart @@ -12,12 +12,16 @@ class ImageGroup extends StatelessWidget { required this.message, required this.messageTheme, required this.size, + this.onReturnAction, this.onShowMessage, }) : super(key: key); /// List of attachments to show final List images; + /// Callback when attachment is returned to from other screens + final ValueChanged? onReturnAction; + /// Message which images are attached to final Message message; @@ -111,10 +115,10 @@ class ImageGroup extends StatelessWidget { void _onTap( BuildContext context, int index, - ) { + ) async { final channel = StreamChannel.of(context).channel; - Navigator.push( + final res = await Navigator.push( context, MaterialPageRoute( builder: (context) => StreamChannel( @@ -129,6 +133,7 @@ class ImageGroup extends StatelessWidget { ), ), ); + if (res != null) onReturnAction?.call(res); } Widget _buildImage(BuildContext context, int index) => ImageAttachment( 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 e8f8cdbc..a460eaa5 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -270,7 +270,7 @@ class MessageListView extends StatefulWidget { class _MessageListViewState extends State { ItemScrollController? _scrollController; - Function? _onThreadTap; + void Function(Message)? _onThreadTap; bool _showScrollToBottom = false; late final ItemPositionsListener _itemPositionListener; int? _messageListLength; @@ -814,7 +814,7 @@ class _MessageListViewState extends State { showUsername: !isMyMessage, padding: const EdgeInsets.all(8), showSendingIndicator: false, - onThreadTap: _onThreadTap as void Function(Message)?, + onThreadTap: _onThreadTap, borderRadiusGeometry: const BorderRadius.only( topLeft: Radius.circular(16), bottomLeft: Radius.circular(2), @@ -976,7 +976,7 @@ class _MessageListViewState extends State { showThreadReplyMessage: !isThreadMessage, showFlagButton: !isMyMessage, borderSide: borderSide, - onThreadTap: _onThreadTap as void Function(Message)?, + onThreadTap: _onThreadTap, onReplyTap: widget.onReplyTap, attachmentBorderRadiusGeometry: BorderRadius.only( topLeft: Radius.circular(attachmentBorderRadius), diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index 85caf4a6..fc25769d 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -126,6 +126,7 @@ class MessageWidget extends StatefulWidget { message: message, messageTheme: messageTheme, onShowMessage: onShowMessage, + onReturnAction: onReturnAction, ), ), border,