336 lines
11 KiB
Dart
336 lines
11 KiB
Dart
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<String, List<String>> 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<String, List<String>> params) {
|
||
String? rawUrl = params['videoUrl']?.first;
|
||
String decodedVideoUrl =
|
||
rawUrl != null ? Uri.decodeComponent(rawUrl) : "";
|
||
return VideoPlayerPage(videoUrl: decodedVideoUrl);
|
||
},
|
||
),
|
||
);
|
||
router.define(
|
||
imagePreview,
|
||
handler: Handler(
|
||
handlerFunc: (_, Map<String, List<String>> params) {
|
||
List<String> 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<dynamic> 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<String, List<String>> 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()),
|
||
);
|
||
}
|
||
}
|