import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:vitalapp/routes/routes.dart'; import 'package:vitalapp/routes/transition.dart'; class FromPageNavigator extends StatelessWidget { const FromPageNavigator({ super.key, required this.nestedKey, required this.initialRoute, }); final int nestedKey; final String initialRoute; @override Widget build(BuildContext context) { return Navigator( key: Get.nestedKey( nestedKey, ), initialRoute: initialRoute, onGenerateRoute: onGenerateRoute, ); } /// 路由生成器 Route? onGenerateRoute(RouteSettings settings) { String? name = settings.name; if (name == null) return null; name = name.split("?")[0]; if (name == "/") return null; final route = Routes.routes.firstWhereOrNull((e) => e.name == name); if (route != null) { return GetPageRoute( page: route.page, binding: route.binding, transition: Transition.rightToLeft, customTransition: FTransitions.sharedAxisHorizontal, transitionDuration: const Duration(milliseconds: 800), ); } else { return GetPageRoute( page: () => Container( color: Colors.white, child: Center( child: Text( "Route: $name", style: const TextStyle(fontSize: 32), ), ), ), binding: BindingsBuilder(() {}), transition: Transition.rightToLeft, customTransition: FTransitions.sharedAxisHorizontal, transitionDuration: const Duration(milliseconds: 800), ); } } }