import 'dart:convert'; import 'package:fluro/fluro.dart'; import 'package:aslan/chatvibe_domain/models/res/login_res.dart'; import 'package:aslan/chatvibe_domain/models/res/room_res.dart'; import 'package:aslan/chatvibe_features/user/fans/fans_user_list_page.dart'; import 'package:aslan/chatvibe_features/settings/language/language_page.dart'; import 'package:aslan/chatvibe_features/report/report_page.dart'; import 'package:aslan/chatvibe_features/task/at_task_list_page.dart'; import 'package:aslan/chatvibe_features/webview/webview_page.dart'; import 'package:aslan/chatvibe_core/routes/at_router_init.dart'; import 'package:aslan/chatvibe_features/admin/editing/editing_user_room_page.dart'; import 'package:aslan/chatvibe_features/admin/search/edit_room_search_admin_page.dart'; import 'package:aslan/chatvibe_features/admin/search/edit_user_search_admin_page.dart'; import 'package:aslan/chatvibe_features/user/profile/person_detail_page.dart'; import 'package:aslan/chatvibe_features/user/profile/relation/cp/cp_list_page.dart'; import 'package:aslan/chatvibe_features/room/inv_game/inv_game_page.dart'; import 'package:aslan/chatvibe_features/search/at_search_page.dart'; import 'package:aslan/chatvibe_features/media/image_preview_page.dart'; import 'package:aslan/chatvibe_features/media/video_player_page.dart'; import 'package:aslan/chatvibe_features/webview/game_bs_webview_page.dart'; import 'package:aslan/chatvibe_features/webview/game_lx_webview_page.dart'; import 'package:aslan/chatvibe_features/webview/game_ry_webview_page.dart'; import 'package:aslan/chatvibe_features/webview/game_ym_webview_page.dart'; import 'package:aslan/chatvibe_features/home/honor/honor_list_page.dart'; import 'package:aslan/chatvibe_features/home/medals/medals_list_page.dart'; import 'package:aslan/chatvibe_features/home/vip/vip_list_page.dart'; import 'package:aslan/chatvibe_features/user/follow/follow_user_list_page.dart'; import 'package:aslan/chatvibe_features/user/level/level_page.dart'; import 'package:aslan/chatvibe_features/user/visitor/visitor_user_list_page.dart'; import '../chat/message/at_message_page.dart'; import '../home/medals_honor/medals_honor_list_page.dart'; import '../user/edit/edit_user_info_page2.dart'; class MainRoute implements ATIRouterProvider { static String report = '/at/main/report'; static String person = '/at/main/person'; static String edit = '/at/main/person/edit'; static String follow = '/at/main/me/follow'; static String vistors = '/at/main/me/vistors'; static String fans = '/at/main/me/fans'; static String mainSearch = '/at/main/at/mainSearch'; static String cpList = '/at/main/person/cp/cpList'; static String language = '/at/main/language'; static String medalsList = '/at/main/medalsList'; static String medalsHonorListPage = '/at/main/medalsHonorListPage'; static String vipList = '/at/main/vipList'; static String levelList = '/level/levelList'; static String videoPlayer = '/at/main/videoPlayer'; static String imagePreview = '/at/main/imagePreview'; static String taskList = '/at/main/taskList'; static String honorList = '/at/main/honorList'; static String invGamePage = '/at/main/invGamePage'; static String message = '/at/main/messagePage'; static String editRoomSearchAdmin = '/at/main/editRoomSearchAdmin'; static String editUserSearchAdmin = '/at/main/editUserSearchAdmin'; static String editingUserRoomAdmin = '/at/main/editingUserRoomAdmin'; static String webViewPage = '/at/main/webViewPage'; static String gameBsWebviewPage = '/at/main/gameBsWebviewPage'; static String gameRyWebviewPage = '/at/main/gameRyWebviewPage'; static String gameLxWebviewPage = '/at/main/gameLxWebviewPage'; static String gameYmWebviewPage = '/at/main/gameYmWebviewPage'; @override void initRouter(FluroRouter router) { router.define( report, handler: Handler( handlerFunc: (_, params) => ReportPage( type: params['type']!.first, tageId: params['tageId']!.first, ), ), ); router.define( person, handler: Handler( handlerFunc: (_, params) => PersonDetailPage( isMe: params['isMe']!.first, tageId: params['tageId']!.first, ), ), ); router.define( mainSearch, handler: Handler(handlerFunc: (_, params) => SearchPage()), ); router.define( message, handler: Handler( handlerFunc: (_, Map> params) { String? isFromRoom = params['isFromRoom']?.first; return ATMessagePage(isFromRoom: isFromRoom == "true"); }, ), ); router.define( cpList, handler: Handler(handlerFunc: (_, params) => CpListPage()), ); router.define( language, handler: Handler(handlerFunc: (_, params) => LanguagePage()), ); router.define( edit, handler: Handler(handlerFunc: (_, params) => EditUserInfoPage2()), ); router.define( follow, handler: Handler( handlerFunc: (_, params) => FollowUserListPage( removePreviousPersonDetail: params['removePreviousPersonDetail']?.first == 'true', ), ), ); router.define( vistors, handler: Handler( handlerFunc: (_, params) => VisitorUserListPage( removePreviousPersonDetail: params['removePreviousPersonDetail']?.first == 'true', ), ), ); router.define( fans, handler: Handler( handlerFunc: (_, params) => FansUserListPage( removePreviousPersonDetail: params['removePreviousPersonDetail']?.first == 'true', ), ), ); router.define( medalsList, handler: Handler(handlerFunc: (_, params) => MedalsListPage()), ); router.define( vipList, handler: Handler(handlerFunc: (_, params) => VipListPage()), ); router.define( levelList, handler: Handler(handlerFunc: (_, params) => LevelPage()), ); router.define( taskList, handler: Handler(handlerFunc: (_, params) => ATTaskListPage()), ); router.define( honorList, handler: Handler(handlerFunc: (_, params) => HonorListPage()), ); router.define( editRoomSearchAdmin, handler: Handler(handlerFunc: (_, params) => EditRoomSearchAdminPage()), ); router.define( editUserSearchAdmin, handler: Handler(handlerFunc: (_, params) => EditUserSearchAdminPage()), ); router.define( invGamePage, handler: Handler(handlerFunc: (_, params) => InvGamePage()), ); router.define( videoPlayer, handler: Handler( handlerFunc: (_, Map> params) { String? rawUrl = params['videoUrl']?.first; String decodedVideoUrl = rawUrl != null ? Uri.decodeComponent(rawUrl) : ""; return VideoPlayerPage(videoUrl: decodedVideoUrl); }, ), ); router.define( imagePreview, handler: Handler( handlerFunc: (_, Map> params) { List imageUrls = []; int initialIndex = 0; try { // 解析 imageUrls 参数(JSON 字符串) if (params['imageUrls'] != null && params['imageUrls']!.isNotEmpty) { String encodedUrls = params['imageUrls']!.first; String decodedUrls = Uri.decodeComponent(encodedUrls); List urlList = jsonDecode(decodedUrls); imageUrls = urlList.map((item) => item.toString()).toList(); } // 解析 initialIndex if (params['initialIndex'] != null && params['initialIndex']!.isNotEmpty) { initialIndex = int.tryParse(params['initialIndex']!.first) ?? 0; } } catch (e) { print('解析图片预览参数失败: $e'); // 可以返回错误页面或默认页面 } return ImagePreviewPage( imageUrls: imageUrls, initialIndex: initialIndex, ); }, ), ); router.define( editingUserRoomAdmin, handler: Handler( handlerFunc: (_, Map> params) { String? type = params['type']?.first; String? profileJson = params['profile']?.first; ChatVibeUserProfile? userProfile; ChatVibeRoomRes? roomProfile; if (type == "User") { userProfile = ChatVibeUserProfile.fromJson( jsonDecode(profileJson ?? ""), ); } else { roomProfile = ChatVibeRoomRes.fromJson( jsonDecode(profileJson ?? ""), ); } return EditingUserRoomPage( type: type ?? "", userProfile: userProfile, roomProfile: roomProfile, ); }, ), ); router.define( webViewPage, handler: Handler( handlerFunc: (_, params) { String? url = params['url']?.first; String decodedUrl = url != null ? Uri.decodeComponent(url) : ""; return WebViewPage( title: params['title']?.first ?? "", url: decodedUrl, showTitle: params['showTitle']?.first ?? "", ); }, ), ); router.define( gameBsWebviewPage, handler: Handler( handlerFunc: (_, params) { String? url = params['url']?.first; String decodedUrl = url != null ? Uri.decodeComponent(url) : ""; return GameBsWebviewPage( url: decodedUrl, height: double.parse(params['height']?.first ?? "0"), width: double.parse(params['width']?.first ?? "0"), gameId:params['gameId']?.first??"", ); }, ), ); router.define( gameRyWebviewPage, handler: Handler( handlerFunc: (_, params) { String? url = params['url']?.first; String decodedUrl = url != null ? Uri.decodeComponent(url) : ""; return GameRyWebviewPage( url: decodedUrl, height: double.parse(params['height']?.first ?? "0"), width: double.parse(params['width']?.first ?? "0"), gameId:params['gameId']?.first??"", ); }, ), ); router.define( gameLxWebviewPage, handler: Handler( handlerFunc: (_, params) { String? url = params['url']?.first; String decodedUrl = url != null ? Uri.decodeComponent(url) : ""; return GameLxWebviewPage( url: decodedUrl, height: double.parse(params['height']?.first ?? "0"), width: double.parse(params['width']?.first ?? "0"), gameId:params['gameId']?.first??"", ); }, ), ); router.define( gameYmWebviewPage, handler: Handler( handlerFunc: (_, params) { String? url = params['url']?.first; String decodedUrl = url != null ? Uri.decodeComponent(url) : ""; return GameYmWebviewPage( url: decodedUrl, height: double.parse(params['height']?.first ?? "0"), width: double.parse(params['width']?.first ?? "0"), gameId:params['gameId']?.first??"", ); }, ), ); router.define( medalsHonorListPage, handler: Handler(handlerFunc: (_, params) => MedalsHonorListPage()), ); } }