import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:together_mobile/models/contact_model.dart'; import 'package:together_mobile/models/init_get_it.dart'; import 'package:together_mobile/screens/contact/contact_apply_screen/applicant_profile_screen/applicant_profile_screen.dart'; import 'package:together_mobile/screens/contact_add/create_group_chat_screen.dart'; import 'package:together_mobile/screens/contact_add/invite_group_chat_member_screen.dart'; import 'package:together_mobile/screens/friend_profile/friend_setting_screen/friend_setting_screen.dart'; import 'package:together_mobile/screens/group_chat_profile/change_group_chat_screen/change_group_chat_intro_screen.dart'; import 'package:together_mobile/screens/group_chat_profile/change_group_chat_screen/change_group_chat_name_screen.dart'; import 'package:together_mobile/screens/group_chat_profile/change_group_chat_screen/change_group_chat_remark_screen.dart'; import 'package:together_mobile/screens/group_chat_profile/change_group_chat_screen/change_my_remark_screen.dart'; import 'router_key.dart'; import 'package:together_mobile/screens/contact/contact_apply_screen/apply_list_screen.dart'; import 'package:together_mobile/screens/contact/contact_screen.dart'; import 'package:together_mobile/screens/contact/manage_group_screen/manage_group_screen.dart'; import 'package:together_mobile/screens/contact_add/contact_add_friend_screen/add_friend_screen.dart'; import 'package:together_mobile/screens/contact_add/search_new_screen.dart'; import 'package:together_mobile/screens/friend_profile/friend_profile_screen.dart'; import 'package:together_mobile/screens/group_chat_profile/group_chat_profile_screen.dart'; final contactRouter = GoRoute( path: '/contact', name: 'Contact', builder: (context, state) { if (state.queryParameters.isNotEmpty) { var deletedFriendId = state.queryParameters['deletedFriendId']; if (deletedFriendId != null) { getIt.get().removeFriend(deletedFriendId); getIt.get().removeFriend(deletedFriendId); } } return ContactScreen(); }, routes: [ GoRoute( path: 'add', name: 'AddContact', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => const SearchNewScreen(), routes: [ GoRoute( path: 'friend', name: 'AddFriend', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => AddFriendScreen( accountProfile: state.queryParameters, ), ), ], ), GoRoute( path: 'create_group_chat', name: 'CreateGroupChat', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => const CreateGroupChatScreen(), ), GoRoute( path: 'apply_list', name: 'ApplyList', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => const ApplyListScreen(), routes: [ GoRoute( path: 'applicant_profile', name: 'ApplicantProfile', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => ApplicantProfileScreen( accountProfile: state.queryParameters, ), ), ], ), GoRoute( path: 'friend_group', name: 'FriendGroup', parentNavigatorKey: rootNavigatorKey, pageBuilder: (context, state) { return CustomTransitionPage( key: state.pageKey, child: const FriendGroupScreen(), transitionDuration: const Duration( milliseconds: 200, ), reverseTransitionDuration: const Duration(milliseconds: 200), transitionsBuilder: ( context, animation, secondaryAnimation, child, ) { const begin = Offset(1.0, 0.0); const end = Offset.zero; final tween = Tween(begin: begin, end: end); final offsetAnimation = animation.drive(tween); return SlideTransition( position: offsetAnimation, child: child, ); }, ); }, builder: (context, state) => const FriendGroupScreen(), ), GoRoute( path: 'friend_profile', name: 'FriendProfile', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => FriendProfileScreen(friendId: state.queryParameters['friendId']!), routes: [ GoRoute( path: 'friend_setting', name: 'FriendSetting', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => FriendSettingScreen( friendId: state.queryParameters['friendId']!, ), ), ], ), GoRoute( path: 'group_chat_profile', name: 'GroupChatProfile', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => GroupChatProfileScreen( groupChatId: state.queryParameters['groupChatId']!, ), routes: [ GoRoute( path: 'invite_group_chat_member', name: 'InviteGroupChatMember', parentNavigatorKey: rootNavigatorKey, builder: (context, state) => InviteGroupChatMemberScreen( groupChatId: state.queryParameters['groupChatId']!, ), ), GoRoute( path: 'change_group_chat_name', name: 'ChangeGroupChatName', parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatNameScreen( groupChatId: state.queryParameters['groupChatId']!, name: state.queryParameters['name']!, ); }, ), GoRoute( path: 'change_group_chat_intro', name: 'ChangeGroupChatIntro', parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatIntroScreen( groupChatId: state.queryParameters['groupChatId']!, intro: state.queryParameters['intro']!, ); }, ), GoRoute( path: 'change_group_chat_remark', name: 'ChangeGroupChatRemark', parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatRemarkScreen( groupChatId: state.queryParameters['groupChatId']!, nameRemark: state.queryParameters['nameRemark']!, ); }, ), GoRoute( path: 'change_my_remark', name: 'ChangeMyRemark', parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeMyRemarkScreen( groupChatId: state.queryParameters['groupChatId']!, myRemark: state.queryParameters['myRemark']!, ); }, ), ], ), ], );