@@ -13,7 +13,6 @@ import '../model/internal_link.dart';
13
13
import '../model/narrow.dart' ;
14
14
import 'actions.dart' ;
15
15
import 'clipboard.dart' ;
16
- import 'compose_box.dart' ;
17
16
import 'dialog.dart' ;
18
17
import 'icons.dart' ;
19
18
import 'inset_shadow.dart' ;
@@ -105,6 +104,16 @@ abstract class MessageActionSheetMenuItemButton extends StatelessWidget {
105
104
final Message message;
106
105
final BuildContext messageListContext;
107
106
107
+ /// The [MessageListPageState] this action sheet was triggered from.
108
+ ///
109
+ /// Uses the inefficient [BuildContext.findAncestorStateOfType] ;
110
+ /// don't call this in a build method.
111
+ MessageListPageState findMessageListPage () {
112
+ assert (messageListContext.mounted,
113
+ 'findMessageListPage should be called only when messageListContext is known to still be mounted' );
114
+ return MessageListPage .ancestorOf (messageListContext);
115
+ }
116
+
108
117
@override
109
118
Widget build (BuildContext context) {
110
119
final designVariables = DesignVariables .of (context);
@@ -315,8 +324,7 @@ class QuoteAndReplyButton extends MessageActionSheetMenuItemButton {
315
324
// This will be null only if the compose box disappeared after the
316
325
// message action sheet opened, and before "Quote and reply" was pressed.
317
326
// Currently a compose box can't ever disappear, so this is impossible.
318
- ComposeBoxController composeBoxController =
319
- MessageListPage .ancestorOf (messageListContext).composeBoxController! ;
327
+ var composeBoxController = findMessageListPage ().composeBoxController! ;
320
328
final topicController = composeBoxController.topicController;
321
329
if (
322
330
topicController != null
@@ -341,8 +349,7 @@ class QuoteAndReplyButton extends MessageActionSheetMenuItemButton {
341
349
// This will be null only if the compose box disappeared during the
342
350
// quotation request. Currently a compose box can't ever disappear,
343
351
// so this is impossible.
344
- composeBoxController =
345
- MessageListPage .ancestorOf (messageListContext).composeBoxController! ;
352
+ composeBoxController = findMessageListPage ().composeBoxController! ;
346
353
composeBoxController.contentController
347
354
.registerQuoteAndReplyEnd (PerAccountStoreWidget .of (messageListContext), tag,
348
355
message: message,
0 commit comments