index.dart 5.2 KB

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