Skip to content

Commit bcb6aac

Browse files
CubeRomanMagellanMagellan
andauthored
SK-587: Hard back does not work (#94)
* add pop invoke * minor fix didPop * add swipe ios impl --------- Co-authored-by: Magellan <magellan@connectycube.com>
1 parent 3e176b2 commit bcb6aac

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

sama_chat_client/lib/src/features/conversation/view/conversation_page.dart

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import '../../../shared/ui/colors.dart';
2020
import '../../../shared/utils/string_utils.dart';
2121
import '../../../shared/widget/loaders.dart';
2222
import '../../../shared/widget/typing_indicator.dart';
23+
import '../../group_info/view/group_info_page.dart';
2324
import '../bloc/ai_message/ai_message_bloc.dart';
2425
import '../bloc/conversation_bloc.dart';
2526
import '../bloc/delete_messages/delete_messages_bloc.dart';
@@ -289,10 +290,17 @@ Future<void> _infoAction(BuildContext context) async {
289290
if (state.conversation.type == 'u') {
290291
context.push(userInfoPath, extra: state.conversation.opponent);
291292
} else {
292-
bool conversationUpdated =
293-
await context.push(groupInfoPath, extra: state.conversation) as bool;
294-
if (conversationUpdated && context.mounted) {
295-
context.read<ConversationBloc>().add(const ParticipantsReceived());
296-
}
293+
Navigator.push(
294+
context,
295+
MaterialPageRoute(
296+
builder: (context) => GroupInfoPage.route(state.conversation,
297+
onResult: (conversationUpdated) {
298+
if (conversationUpdated && context.mounted) {
299+
context
300+
.read<ConversationBloc>()
301+
.add(const ParticipantsReceived());
302+
}
303+
})),
304+
);
297305
}
298306
}

sama_chat_client/lib/src/features/group_info/view/group_info_page.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,23 @@ import '../../../shared/ui/colors.dart';
1010
import '../bloc/group_info_bloc.dart';
1111
import 'group_info_form.dart';
1212

13+
typedef GroupInfoPageCallback = void Function(bool result);
14+
1315
class GroupInfoPage extends StatelessWidget {
1416
final ConversationModel conversation;
17+
final GroupInfoPageCallback? onResult;
1518

16-
const GroupInfoPage({required this.conversation, super.key});
19+
const GroupInfoPage({required this.conversation, this.onResult, super.key});
1720

18-
static BlocProvider route(Object? extra) {
21+
static BlocProvider route(Object? extra, {GroupInfoPageCallback? onResult}) {
1922
ConversationModel conversation = extra as ConversationModel;
2023

2124
return BlocProvider<GroupInfoBloc>(
2225
create: (context) => GroupInfoBloc(
2326
RepositoryProvider.of<ConversationRepository>(context),
2427
RepositoryProvider.of<UserRepository>(context),
2528
conversation: conversation),
26-
child: GroupInfoPage(conversation: conversation),
29+
child: GroupInfoPage(conversation: conversation, onResult: onResult),
2730
);
2831
}
2932

@@ -32,15 +35,17 @@ class GroupInfoPage extends StatelessWidget {
3235
return BlocBuilder<GroupInfoBloc, GroupInfoState>(
3336
builder: (context, state) {
3437
return PopScope(
35-
canPop: false,
38+
onPopInvokedWithResult: (didPop, result) {
39+
onResult?.call(state.status.isSuccess);
40+
},
3641
child: Scaffold(
3742
backgroundColor: black,
3843
resizeToAvoidBottomInset: false,
3944
appBar: AppBar(
4045
backgroundColor: black,
4146
leading: IconButton(
4247
icon: const Icon(Icons.arrow_back_outlined, color: white),
43-
onPressed: () => context.pop(state.status.isSuccess),
48+
onPressed: () => context.pop(),
4449
),
4550
title: Text(
4651
state.name.value,

0 commit comments

Comments
 (0)