flutter/lib/router/index.dart

122 lines
3.7 KiB
Dart
Raw Normal View History

2025-07-21 15:46:30 +08:00
/// Getx路由管理
library;
import 'package:flutter/material.dart';
import 'package:get/get.dart';
2025-08-21 10:50:38 +08:00
import 'package:loopin/bings/chat_binding.dart';
2025-07-21 15:46:30 +08:00
import 'package:loopin/pages/chat/chat.dart';
2025-08-21 10:50:38 +08:00
import 'package:loopin/pages/chat/chat_group.dart';
import 'package:loopin/pages/chat/chat_no_friend.dart';
import 'package:loopin/pages/chat/notify/interaction.dart';
import 'package:loopin/pages/chat/notify/noFriend.dart';
import 'package:loopin/pages/chat/notify/system.dart';
2025-09-03 11:25:31 +08:00
import 'package:loopin/pages/groupChat/index.dart';
2025-08-21 10:50:38 +08:00
import 'package:loopin/pages/my/des.dart';
2025-09-03 11:25:31 +08:00
import 'package:loopin/pages/my/fans.dart';
import 'package:loopin/pages/my/flowing.dart';
import 'package:loopin/pages/my/mutual_followers.dart';
2025-08-21 10:50:38 +08:00
import 'package:loopin/pages/my/nick_name.dart';
import 'package:loopin/pages/my/setting.dart';
import 'package:loopin/pages/my/user_info.dart';
import 'package:loopin/pages/my/vloger.dart';
2025-08-27 18:14:45 +08:00
import 'package:loopin/pages/search/index.dart';
import 'package:loopin/pages/search/search-result.dart';
import 'package:loopin/pages/video/commonVideo.dart';
2025-09-03 11:25:31 +08:00
import 'package:loopin/pages/video/report.dart';
2025-07-21 15:46:30 +08:00
import '../layouts/index.dart';
/* 引入路由页面 */
import '../pages/auth/login.dart';
// 商品详细
import '../pages/goods/detail.dart';
import '../pages/order/detail.dart';
// 订单
import '../pages/order/index.dart';
// 引入工具类
import '../utils/common.dart';
// 路由地址集合
final Map<String, Widget> routes = {
'/': const Layout(),
'/goods': const Goods(),
2025-08-21 10:50:38 +08:00
// '/chatNoFriend': const ChatNoFriend(),
// '/chatGroup': const ChatGroup(),
2025-07-21 15:46:30 +08:00
'/order': const Order(),
'/order/detail': const OrderDetail(),
2025-08-21 10:50:38 +08:00
'/vloger': const Vloger(),
'/report': const ReportPage(),
'/videoDetail': const VideoDetailPage(),
2025-09-03 11:25:31 +08:00
'/search': const SearchPage(),
'/search-result': const SearchResultPage(),
2025-08-21 10:50:38 +08:00
//settins
'/setting': const Setting(),
'/userInfo': const UserInfo(),
'/notifications': const Setting(),
'/privacy': const Setting(),
'/about': const Setting(),
'/des': const Des(),
'/nickName': const NickName(),
//通知相关
'/noFriend': const Nofriend(),
'/system': const System(),
'/interaction': const Interaction(),
2025-09-03 11:25:31 +08:00
//关系链
'/fans': const Fans(),
'/flow': const Flowing(),
'/eachFlow': const MutualFollowers(),
//群
'/group': const StartGroupChatPage(),
2025-07-21 15:46:30 +08:00
};
final List<GetPage> routeList = routes.entries
.map((e) => GetPage(
name: e.key, // 路由名称
page: () => e.value, // 路由页面
2025-08-21 10:50:38 +08:00
// transition: Transition.rightToLeftWithFade, // 跳转路由动画
transition: Transition.rightToLeft, // 跳转路由动画
2025-07-21 15:46:30 +08:00
middlewares: [RouteMiddleware()], // 路由中间件
))
.toList();
2025-08-21 10:50:38 +08:00
final List<GetPage> bingsRoutes = [
GetPage(
name: '/chat',
page: () => const Chat(),
binding: ChatBinding(),
transition: Transition.rightToLeft,
middlewares: [RouteMiddleware()],
),
GetPage(
name: '/chatNoFriend',
page: () => const ChatNoFriend(),
binding: ChatBinding(),
transition: Transition.rightToLeft,
middlewares: [RouteMiddleware()],
),
GetPage(
name: '/chatGroup',
page: () => const ChatGroup(),
binding: ChatBinding(),
transition: Transition.rightToLeft,
middlewares: [RouteMiddleware()],
),
];
2025-07-21 15:46:30 +08:00
final List<GetPage> routePages = [
GetPage(name: '/login', page: () => const Login()),
...routeList,
2025-08-21 10:50:38 +08:00
...bingsRoutes,
2025-07-21 15:46:30 +08:00
];
// 路由中间件拦截验证
class RouteMiddleware extends GetMiddleware {
@override
RouteSettings? redirect(String? route) {
return Common.isLogin()
? null
: const RouteSettings(
name: '/login',
);
}
}