index.dart 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. export 'base.dart';
  2. export 'user.dart';
  3. export 'order.dart';
  4. export 'animation.dart';
  5. import 'package:flutter/cupertino.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:bot_toast/bot_toast.dart';
  8. import 'package:twong/pages/not_found.dart';
  9. import 'package:twong/utils/index.dart';
  10. import 'package:twong/pages/product/product_comment.dart';
  11. import 'package:twong/router/animation.dart';
  12. import 'package:twong/pages/cate.dart';
  13. import 'package:twong/pages/login/protocol.dart';
  14. import 'package:twong/pages/product/product_details.dart';
  15. import 'package:twong/pages/product/product_list.dart';
  16. import 'package:twong/pages/login/login.dart';
  17. import 'package:twong/pages/login/register.dart';
  18. import 'package:twong/pages/search.dart';
  19. import 'package:twong/pages/tabs.dart';
  20. import 'package:twong/pages/tabs/cart.dart';
  21. import 'package:twong/pages/tabs/user.dart';
  22. import 'package:twong/pages/tabs/wallet.dart';
  23. import 'package:twong/router/base.dart';
  24. import 'package:twong/router/order.dart';
  25. import 'package:twong/router/user.dart';
  26. import 'package:twong/widgets/photo_view.dart';
  27. Map<String, RouterData> routerList = {};
  28. initRouterList() {
  29. routerList.addAll(list);
  30. routerList.addAll(UserRouter.list);
  31. routerList.addAll(OrderRouter.list);
  32. }
  33. Map<String, RouterData> get list {
  34. return {
  35. RouteNames.home: RouterData(
  36. auth: false,
  37. page: ({BuildContext context, RouteSettings settings}) {
  38. return FadeRoute(Tabs());
  39. }
  40. ),
  41. RouteNames.cate: RouterData(
  42. auth: false,
  43. page: ({BuildContext context, RouteSettings settings}) {
  44. return EnterExitRoute(null, CatePage(), false);
  45. }
  46. ),
  47. RouteNames.wallet: RouterData(
  48. auth: true,
  49. page: ({BuildContext context, RouteSettings settings}) {
  50. return MaterialPageRoute(builder: (context) => WalletPage());
  51. }
  52. ),
  53. RouteNames.cart: RouterData(
  54. auth: false,
  55. page: ({BuildContext context, RouteSettings settings}) {
  56. return CupertinoPageRoute(builder: (context) => CartPage(show: settings.arguments));
  57. }
  58. ),
  59. RouteNames.user: RouterData(
  60. auth: false,
  61. page: ({BuildContext context, RouteSettings settings}) {
  62. return MaterialPageRoute(builder: (context) => UserPage());
  63. }
  64. ),
  65. RouteNames.search: RouterData(
  66. auth: false,
  67. page: ({BuildContext context, RouteSettings settings}) {
  68. return FadeRoute(SearchPage());
  69. }
  70. ),
  71. RouteNames.productList: RouterData(
  72. auth: false,
  73. page: ({BuildContext context, RouteSettings settings}) {
  74. return EnterExitRoute(null, ProductListPage(settings.arguments), true);
  75. }
  76. ),
  77. RouteNames.productDetails: RouterData(
  78. auth: false,
  79. page: ({BuildContext context, RouteSettings settings}) {
  80. return CupertinoPageRoute(builder: (context) => ProductDetailsPage(settings.arguments));
  81. }
  82. ),
  83. RouteNames.login: RouterData(
  84. auth: false,
  85. page: ({BuildContext context, RouteSettings settings}) {
  86. return DownUpRoute(null, LoginPage(), true);
  87. }
  88. ),
  89. RouteNames.register: RouterData(
  90. auth: false,
  91. page: ({BuildContext context, RouteSettings settings}) {
  92. return DownUpRoute(null, RegisterPage(), true);
  93. }
  94. ),
  95. RouteNames.protocol: RouterData(
  96. auth: false,
  97. page: ({BuildContext context, RouteSettings settings}) {
  98. return CupertinoPageRoute(builder: (context) => ProtocolPage(settings.arguments));
  99. }
  100. ),
  101. RouteNames.comment: RouterData(
  102. auth: true,
  103. page: ({BuildContext context, RouteSettings settings}) {
  104. return EnterExitRoute(null, ProductCommentPage(settings.arguments), true);
  105. }
  106. ),
  107. RouteNames.picture: RouterData(
  108. auth: false,
  109. page: ({BuildContext context, RouteSettings settings}) {
  110. return CupertinoPageRoute(builder: (context) => PhotoViewPage(settings.arguments));
  111. }
  112. ),
  113. RouteNames.notFound: RouterData(
  114. auth: false,
  115. page: ({BuildContext context, RouteSettings settings}) {
  116. return CupertinoPageRoute(builder: (context) => NotFoundPage());
  117. }
  118. ),
  119. };
  120. }
  121. Route<dynamic> onGenerateRoute(RouteSettings settings) {
  122. final String routeName = settings.name;
  123. Log.i("route to ==> $routeName");
  124. if(!routerList.containsKey(routeName)) {
  125. return routerList[RouteNames.notFound].page();
  126. }
  127. var routeData = routerList[routeName];
  128. if(routeData?.auth != null && routeData.auth && Cache.token == null){
  129. Log.i("route: need login");
  130. BotToast.showText(text:"请先进行登陆!");
  131. return routerList[RouteNames.login].page(settings: settings);
  132. }
  133. return routeData.page(settings: settings);
  134. }