From aaf2d3947304d6fe72701cec1f31f2763059d4db Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 13 Jan 2021 13:47:59 +0100 Subject: [PATCH] add quoted messages to threads --- example/lib/main.dart | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 49ee3fdc..7b2f578a 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -763,7 +763,7 @@ class _ChannelPageState extends State { } } -class ThreadPage extends StatelessWidget { +class ThreadPage extends StatefulWidget { final Message parent; final int initialScrollIndex; final double initialAlignment; @@ -775,25 +775,54 @@ class ThreadPage extends StatelessWidget { this.initialAlignment, }) : super(key: key); + @override + _ThreadPageState createState() => _ThreadPageState(); +} + +class _ThreadPageState extends State { + Message _quotedMessage; + FocusNode _focusNode = FocusNode(); + + @override + void dispose() { + _focusNode.dispose(); + super.dispose(); + } + + void _reply(Message message) { + setState(() => _quotedMessage = message); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + _focusNode.requestFocus(); + }); + } + @override Widget build(BuildContext context) { return Scaffold( backgroundColor: StreamChatTheme.of(context).colorTheme.whiteSnow, appBar: ThreadHeader( - parent: parent, + parent: widget.parent, ), body: Column( children: [ Expanded( child: MessageListView( - parentMessage: parent, - initialScrollIndex: initialScrollIndex, - initialAlignment: initialAlignment, + parentMessage: widget.parent, + initialScrollIndex: widget.initialScrollIndex, + initialAlignment: widget.initialAlignment, + onMessageSwiped: _reply, + onReplyTap: _reply, ), ), - if (parent.type != 'deleted') + if (widget.parent.type != 'deleted') MessageInput( - parentMessage: parent, + parentMessage: widget.parent, + focusNode: _focusNode, + quotedMessage: _quotedMessage, + onQuotedMessageCleared: () { + setState(() => _quotedMessage = null); + _focusNode.unfocus(); + }, ), ], ),