routes.dart 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:link/view/account.dart';
  4. import 'package:link/view/add_link.dart';
  5. import 'package:link/view/base_info_step1.dart';
  6. import 'package:link/view/begin_add_link.dart';
  7. import 'package:link/view/bind.dart';
  8. import 'package:link/view/choose_country.dart';
  9. import 'package:link/view/choose_social.dart';
  10. import 'package:link/view/choose_theme.dart';
  11. import 'package:link/view/demo1.dart';
  12. import 'package:link/view/demo2.dart';
  13. import 'package:link/view/edit_info.dart';
  14. import 'package:link/view/edit_link.dart';
  15. import 'package:link/view/history.dart';
  16. import 'package:link/view/home_preview.dart';
  17. import 'package:link/view/index.dart';
  18. import 'package:link/view/invit_code.dart';
  19. import 'package:link/view/login.dart';
  20. import 'package:link/view/my_page.dart';
  21. import 'package:link/view/signup.dart';
  22. import 'package:link/view/signup_code.dart';
  23. import 'package:link/view/web.dart';
  24. import '../view/base_info_step2.dart';
  25. import '../view/edit.dart';
  26. import '../view/welcome.dart';
  27. import 'IndexMiddleWare.dart';
  28. import 'LinkMiddleWare.dart';
  29. class routes {
  30. static List<GetPage> pages = [
  31. GetPage(
  32. name: '/',
  33. page: () => const IndexScreen(),
  34. middlewares: [IndexMiddleWare()]),
  35. GetPage(
  36. name: '/welcome', page: () => const WelcomePage(), title: 'welcome'),
  37. GetPage(
  38. name: '/invite_code', page: () => const InviteCode(), title: '请输入邀请码'),
  39. GetPage(name: '/signup', page: () => SignUp(), title: '注册'),
  40. GetPage(name: '/login', page: () => Login(), title: '登录'),
  41. GetPage(name: '/verify_code', page: () => const VerifyCode(), title: '注册'),
  42. GetPage(name: '/edit_nick_info', page: () => const EditAvatrNick()),
  43. GetPage(name: '/edit_base_info', page: () => const EditBaseInfo()),
  44. GetPage(name: '/begin_add_first_link', page: () => const BeginAddLink()),
  45. GetPage(name: '/choose_country', page: () => const ChooseCountry()),
  46. GetPage(name: '/choose_social', page: () => const ChooseSocial()),
  47. GetPage(name: '/add_link', page: () => const AddLink()),
  48. GetPage(name: '/my_index', page: () => const MyIndex()),
  49. GetPage(name: '/edit_info', page: () => const EditInfo()),
  50. GetPage(name: '/edt_home', page: () => const EditScreen()),
  51. GetPage(name: '/account', page: () => const Account()),
  52. GetPage(name: '/history', page: () => const History()),
  53. GetPage(name: '/edit_link', page: () => const EditLink()),
  54. GetPage(name: '/choose_theme', page: () => const ChooseTheme()),
  55. GetPage(name: '/home_preview', page: () => const HomePreview()),
  56. GetPage(name: '/bind', page: () => const Bind(), title: '绑定'),
  57. GetPage(name: '/web', page: () => const WebPage())
  58. ];
  59. }
  60. class MyRoutes {
  61. static const String FIRST_PAGE = '/first_page';
  62. static const String SECOND_PAGE = '/second_page';
  63. }
  64. class RouteGenerator {
  65. static Route<dynamic> generateRoute(RouteSettings? settings) {
  66. switch (settings!.name) {
  67. case MyRoutes.FIRST_PAGE:
  68. return _GeneratePageRoute(widget: const Demo1(), routeName: settings.name!);
  69. case MyRoutes.SECOND_PAGE:
  70. return _GeneratePageRoute(widget: Demo2(), routeName: settings.name!);
  71. default:
  72. return _GeneratePageRoute(widget: Demo1(), routeName: settings.name!);
  73. }
  74. }
  75. }
  76. class _GeneratePageRoute extends PageRouteBuilder {
  77. final Widget widget;
  78. final String routeName;
  79. _GeneratePageRoute({required this.widget, required this.routeName})
  80. : super(
  81. settings: RouteSettings(name: routeName),
  82. pageBuilder: (BuildContext context, Animation<double> animation,
  83. Animation<double> secondaryAnimation) {
  84. return widget;
  85. },
  86. transitionDuration: Duration(milliseconds: 500),
  87. transitionsBuilder: (BuildContext context,
  88. Animation<double> animation,
  89. Animation<double> secondaryAnimation,
  90. Widget child) {
  91. return SlideTransition(
  92. textDirection: TextDirection.rtl,
  93. position: Tween<Offset>(
  94. begin: Offset(1.0, 0.0),
  95. end: Offset.zero,
  96. ).animate(animation),
  97. child: child,
  98. );
  99. });
  100. }