router.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import 'package:appflowy/startup/startup.dart';
  2. import 'package:appflowy/user/application/auth/auth_service.dart';
  3. import 'package:appflowy/user/presentation/sign_in_screen.dart';
  4. import 'package:appflowy/user/presentation/sign_up_screen.dart';
  5. import 'package:appflowy/user/presentation/skip_log_in_screen.dart';
  6. import 'package:appflowy/user/presentation/welcome_screen.dart';
  7. import 'package:appflowy/workspace/presentation/home/home_screen.dart';
  8. import 'package:appflowy_backend/dispatch/dispatch.dart';
  9. import 'package:flowy_infra/time/duration.dart';
  10. import 'package:flowy_infra_ui/widget/route/animation.dart';
  11. import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart'
  12. show UserProfilePB;
  13. import 'package:appflowy_backend/protobuf/flowy-folder2/protobuf.dart';
  14. import 'package:flutter/material.dart';
  15. class AuthRouter {
  16. void pushForgetPasswordScreen(BuildContext context) {}
  17. void pushWelcomeScreen(BuildContext context, UserProfilePB userProfile) {
  18. getIt<SplashRoute>().pushWelcomeScreen(context, userProfile);
  19. }
  20. void pushSignUpScreen(BuildContext context) {
  21. Navigator.of(context).push(
  22. PageRoutes.fade(
  23. () => SignUpScreen(router: getIt<AuthRouter>()),
  24. ),
  25. );
  26. }
  27. void pushHomeScreenWithWorkSpace(
  28. BuildContext context,
  29. UserProfilePB profile,
  30. WorkspaceSettingPB workspaceSetting,
  31. ) {
  32. Navigator.push(
  33. context,
  34. PageRoutes.fade(
  35. () => HomeScreen(
  36. profile,
  37. workspaceSetting,
  38. key: ValueKey(profile.id),
  39. ),
  40. RouteDurations.slow.inMilliseconds * .001,
  41. ),
  42. );
  43. }
  44. Future<void> pushHomeScreen(
  45. BuildContext context,
  46. UserProfilePB userProfile,
  47. ) async {
  48. final result = await FolderEventGetCurrentWorkspace().send();
  49. result.fold(
  50. (workspaceSettingPB) => pushHomeScreenWithWorkSpace(
  51. context,
  52. userProfile,
  53. workspaceSettingPB,
  54. ),
  55. (r) => pushWelcomeScreen(context, userProfile),
  56. );
  57. }
  58. }
  59. class SplashRoute {
  60. Future<void> pushWelcomeScreen(
  61. BuildContext context,
  62. UserProfilePB userProfile,
  63. ) async {
  64. final screen = WelcomeScreen(userProfile: userProfile);
  65. await Navigator.of(context).push(
  66. PageRoutes.fade(
  67. () => screen,
  68. RouteDurations.slow.inMilliseconds * .001,
  69. ),
  70. );
  71. FolderEventGetCurrentWorkspace().send().then((result) {
  72. result.fold(
  73. (workspaceSettingPB) =>
  74. pushHomeScreen(context, userProfile, workspaceSettingPB),
  75. (r) => null,
  76. );
  77. });
  78. }
  79. void pushHomeScreen(
  80. BuildContext context,
  81. UserProfilePB userProfile,
  82. WorkspaceSettingPB workspaceSetting,
  83. ) {
  84. Navigator.push(
  85. context,
  86. PageRoutes.fade(
  87. () => HomeScreen(
  88. userProfile,
  89. workspaceSetting,
  90. key: ValueKey(userProfile.id),
  91. ),
  92. RouteDurations.slow.inMilliseconds * .001,
  93. ),
  94. );
  95. }
  96. void pushSignInScreen(BuildContext context) {
  97. Navigator.push(
  98. context,
  99. PageRoutes.fade(
  100. () => SignInScreen(router: getIt<AuthRouter>()),
  101. RouteDurations.slow.inMilliseconds * .001,
  102. ),
  103. );
  104. }
  105. void pushSkipLoginScreen(BuildContext context) {
  106. Navigator.push(
  107. context,
  108. PageRoutes.fade(
  109. () => SkipLogInScreen(
  110. router: getIt<AuthRouter>(),
  111. authService: getIt<AuthService>(),
  112. ),
  113. RouteDurations.slow.inMilliseconds * .001,
  114. ),
  115. );
  116. }
  117. }