1+ import 'package:collection/src/iterable_extensions.dart' ;
12import 'package:example/channel_list_page.dart' ;
23import 'package:flutter/material.dart' ;
34import 'package:stream_chat_flutter/stream_chat_flutter.dart' ;
@@ -12,6 +13,7 @@ import '../home_page.dart';
1213import '../main.dart' ;
1314import '../new_chat_screen.dart' ;
1415import '../new_group_chat_screen.dart' ;
16+ import '../thread_page.dart' ;
1517import 'routes.dart' ;
1618
1719class AppRoutes {
@@ -48,18 +50,35 @@ class AppRoutes {
4850 );
4951 case Routes .CHANNEL_PAGE :
5052 return MaterialPageRoute (
51- settings: RouteSettings (arguments: args, name: Routes .CHANNEL_PAGE ),
52- builder: (_) {
53- final channelPageArgs = args as ChannelPageArgs ;
54- return StreamChannel (
55- channel: channelPageArgs.channel! ,
56- initialMessageId: channelPageArgs.initialMessage? .id,
57- child: ChannelPage (
58- highlightInitialMessage:
59- channelPageArgs.initialMessage != null ,
60- ),
61- );
62- });
53+ settings: RouteSettings (arguments: args, name: Routes .CHANNEL_PAGE ),
54+ builder: (context) {
55+ final channelPageArgs = args as ChannelPageArgs ;
56+ final initialMessage = channelPageArgs.initialMessage;
57+
58+ return StreamChannel (
59+ channel: channelPageArgs.channel! ,
60+ initialMessageId: initialMessage? .id,
61+ child: Builder (
62+ builder: (context) {
63+ final parentId = initialMessage? .parentId;
64+ Message ? parentMessage;
65+ if (parentId != null ) {
66+ final channel = StreamChannel .of (context).channel;
67+ parentMessage = channel.state! .messages
68+ .firstWhereOrNull ((it) => it.id == parentId);
69+ }
70+ if (parentMessage != null ) {
71+ return ThreadPage (parent: parentMessage);
72+ }
73+ return ChannelPage (
74+ highlightInitialMessage:
75+ channelPageArgs.initialMessage != null ,
76+ );
77+ },
78+ ),
79+ );
80+ },
81+ );
6382 case Routes .NEW_CHAT :
6483 return MaterialPageRoute (
6584 settings: RouteSettings (arguments: args, name: Routes .NEW_CHAT ),
0 commit comments