navigator.dart 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/routes/nav_ids.dart';
  4. import 'package:vitalapp/routes/routes.dart';
  5. import 'package:vitalapp/routes/transition.dart';
  6. class HomeNavigator extends StatelessWidget {
  7. const HomeNavigator({super.key});
  8. @override
  9. Widget build(BuildContext context) {
  10. return Navigator(
  11. key: Get.nestedKey(
  12. NavIds.HOME,
  13. ),
  14. initialRoute: "/dashboard",
  15. onGenerateRoute: onGenerateRoute,
  16. );
  17. }
  18. /// 路由生成器
  19. Route? onGenerateRoute(RouteSettings settings) {
  20. String? name = settings.name;
  21. if (name == null) return null;
  22. name = name.split("?")[0];
  23. if (name == "/") return null;
  24. final route = Routes.routes.firstWhereOrNull((e) => e.name == name);
  25. if (route != null) {
  26. return GetPageRoute(
  27. page: route.page,
  28. binding: route.binding,
  29. // transition: Transition.rightToLeft,
  30. customTransition: FTransitions.sharedAxisHorizontal,
  31. transitionDuration: const Duration(milliseconds: 1000),
  32. );
  33. } else {
  34. return GetPageRoute(
  35. page: () => Container(
  36. color: Colors.white,
  37. child: Center(
  38. child: Text(
  39. "Route: $name",
  40. style: const TextStyle(fontSize: 32),
  41. ),
  42. ),
  43. ),
  44. binding: BindingsBuilder(() {}),
  45. // transition: Transition.rightToLeft,
  46. customTransition: FTransitions.sharedAxisHorizontal,
  47. transitionDuration: const Duration(milliseconds: 1000),
  48. );
  49. }
  50. }
  51. }