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/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 = [ _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.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, ]; }