You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

123 lines
5.8 KiB

import 'package:get/get.dart';
import '../modules/devices/views/bes_scan_view.dart';
import '../modules/devices/views/device_category_view.dart';
import '../modules/devices/views/holder_scan_view.dart';
import '../modules/devices/views/eaicar_scan_view.dart';
import '../modules/feedback/bindings/feedback_bindings.dart';
import '../modules/feedback/views/feedback_view.dart';
import '../modules/goods/bindings/goodsmeet_binding.dart';
import '../modules/goods/bindings/goodstrans_binding.dart';
import '../modules/goods/bindings/goodsvip_binding.dart';
import '../modules/goods/views/goodsmeet_view.dart';
import '../modules/goods/views/goodstrans_view.dart';
import '../modules/goods/views/goodsvip_view.dart';
import '../modules/log_export/bindings/log_export_binding.dart';
import '../modules/log_export/views/log_export_view.dart';
import '../modules/login/bindings/login_binding.dart';
import '../modules/login/views/login_view.dart';
import '../modules/main_tab/bindings/main_tab_binding.dart';
import '../modules/main_tab/views/main_tab_view.dart';
import '../modules/main_tab/views/tabs/device_tab.dart';
import '../modules/main_tab/views/tabs/plaza_tab.dart';
import '../modules/main_tab/views/tabs/todo_tab.dart';
import '../modules/mobile_elf/bindings/mobile_elf_binding.dart';
import '../modules/mobile_elf/views/mobile_elf_view.dart';
import '../modules/my_devices/bindings/my_devices_binding.dart';
import '../modules/my_devices/views/my_devices_view.dart';
import '../modules/ota_upgrade/bindings/ota_upgrade_binding.dart';
import '../modules/ota_upgrade/views/device_ota_view.dart';
import '../modules/payment/bindings/payment_binding.dart';
import '../modules/payment/views/payment_view.dart';
import '../modules/permissions/bindings/permissions_binding.dart';
import '../modules/permissions/views/permissions_view.dart';
import '../modules/profile/bindings/profile_binding.dart';
import '../modules/profile/views/profile_meeting_view.dart';
import '../modules/profile/views/profile_view.dart';
import '../modules/splash/bindings/splash_binding.dart';
import '../modules/splash/views/splash_view.dart';
import '../modules/voice_replication/bindings/voice_replication_binding.dart';
import '../modules/voice_replication/views/voice_replication_view.dart';
import '../modules/bes_test/bindings/bes_test_binding.dart';
import '../modules/module_registry.dart';
import '../modules/bes_test/views/bes_test_view.dart';
import 'app_routes.dart';
/// 路由表。
///
/// 只放**核心页面**(启动/登录/主框架/设备/商品/设置…)。
/// Agent 能力模块的页面由各模块的描述符自带(见 `modules/module_registry.dart`),
/// 在末尾 `...ModuleRegistry.pages` 拼进来,新增模块不用回这里改。
abstract class AppPages {
static const _fade = Transition.rightToLeft;
static const _dur = Duration(milliseconds: 250);
static GetPage _page(String name, GetPageBuilder page,
{Bindings? binding, bool popGesture = true}) =>
GetPage(
name: name,
page: page,
binding: binding,
popGesture: popGesture,
transition: _fade,
transitionDuration: _dur,
);
static final pages = <GetPage>[
_page(Routes.splash, () => const SplashView(), binding: SplashBinding()),
_page(Routes.login, () => const LoginView(), binding: LoginBinding()),
GetPage(
name: Routes.initial,
page: () => const MainTabView(),
binding: MainTabBinding(),
transition: Transition.noTransition,
),
GetPage(
name: Routes.home,
page: () => const MainTabView(),
binding: MainTabBinding(),
transition: Transition.noTransition,
),
_page(Routes.otaUpgrade, () => const DeviceOtaView(),
binding: OtaUpgradeBinding()),
_page(Routes.editProfile, () => const EditProfileView(),
binding: ProfileBinding()),
_page(Routes.profileMeeting, () => ProfileMeetingView(),
binding: ProfileBinding()),
_page(Routes.voiceReplication, () => const VoiceReplicationView(),
binding: VoiceReplicationBinding()),
_page(Routes.feedback, () => const FeedbackView(),
binding: FeedbackBinding()),
_page(Routes.logExport, () => const LogExportView(),
binding: LogExportBinding()),
_page(Routes.permissions, () => const PermissionsView(),
binding: PermissionsBinding()),
// 添加设备第一步:选品类(纯展示,无需 binding)
_page(Routes.deviceCategory, () => const DeviceCategoryView()),
_page(Routes.holderScan, () => const HolderScanView()),
_page(Routes.eaicarScan, () => const EaiCarScanView()),
_page(Routes.besScan, () => const BesScanView()),
_page(Routes.plaza, () => const PlazaTab()),
// 设备、拾忆原是底部 tab,2026-09-24 改为从 AI 页顶栏进入的独立页面。
// 依赖的 HomeController / CalendarController 由 MainTabBinding 注册,主框架始终在栈底,这里不用再绑。
_page(Routes.device, () => const DeviceTab(standalone: true)),
_page(Routes.recall, () => const TodoTab(standalone: true)),
_page(Routes.myDevices, () => const MyDevicesView(),
binding: MyDevicesBinding()),
_page(Routes.payment, () => const PaymentView(),
binding: PaymentBinding()),
_page(Routes.goodsvip, () => const GoodsvipView(),
binding: GoodsvipBinding()),
_page(Routes.goodstrans, () => const GoodstransView(),
binding: GoodstransBinding()),
_page(Routes.goodsmeet, () => const GoodsmeetView(),
binding: GoodsmeetBinding()),
_page(Routes.mobileElf, () => const MobileElfView(),
binding: MobileElfBinding()),
// 设备协议探测页(设置 → 开发者),只在需要重扫固件命令时用
_page(Routes.besTest, () => const BesTestView(),
binding: BesTestBinding()),
// ---------- Agent 能力模块自带的页面 ----------
...ModuleRegistry.pages,
];
}