router.dart 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'package:app_flowy/startup/startup.dart';
  2. import 'package:app_flowy/user/infrastructure/repos/auth_repo.dart';
  3. import 'package:app_flowy/user/presentation/sign_in_screen.dart';
  4. import 'package:app_flowy/user/presentation/sign_up_screen.dart';
  5. import 'package:app_flowy/user/presentation/skip_log_in_screen.dart';
  6. import 'package:app_flowy/user/presentation/welcome_screen.dart';
  7. import 'package:app_flowy/workspace/infrastructure/repos/user_repo.dart';
  8. import 'package:app_flowy/workspace/presentation/home/home_screen.dart';
  9. import 'package:flowy_infra/time/duration.dart';
  10. import 'package:flowy_infra_ui/widget/route/animation.dart';
  11. import 'package:flowy_sdk/protobuf/flowy-user-data-model/protobuf.dart' show UserProfile;
  12. import 'package:flowy_sdk/protobuf/flowy-folder-data-model/protobuf.dart';
  13. import 'package:flutter/material.dart';
  14. class AuthRouter {
  15. void pushForgetPasswordScreen(BuildContext context) {
  16. // TODO: implement showForgetPasswordScreen
  17. }
  18. void pushWelcomeScreen(BuildContext context, UserProfile userProfile) {
  19. getIt<SplashRoute>().pushWelcomeScreen(context, userProfile);
  20. }
  21. void pushSignUpScreen(BuildContext context) {
  22. Navigator.of(context).push(
  23. PageRoutes.fade(
  24. () => SignUpScreen(router: getIt<AuthRouter>()),
  25. ),
  26. );
  27. }
  28. void pushHomeScreen(BuildContext context, UserProfile profile, CurrentWorkspaceSetting workspaceSetting) {
  29. Navigator.push(
  30. context,
  31. PageRoutes.fade(() => HomeScreen(profile, workspaceSetting), RouteDurations.slow.inMilliseconds * .001),
  32. );
  33. }
  34. }
  35. class SplashRoute {
  36. Future<void> pushWelcomeScreen(BuildContext context, UserProfile user) async {
  37. final repo = UserRepo(user: user);
  38. final screen = WelcomeScreen(repo: repo);
  39. final workspaceId = await Navigator.of(context).push(
  40. PageRoutes.fade(
  41. () => screen,
  42. RouteDurations.slow.inMilliseconds * .001,
  43. ),
  44. );
  45. pushHomeScreen(context, repo.user, workspaceId);
  46. }
  47. void pushHomeScreen(BuildContext context, UserProfile userProfile, CurrentWorkspaceSetting workspaceSetting) {
  48. Navigator.push(
  49. context,
  50. PageRoutes.fade(() => HomeScreen(userProfile, workspaceSetting), RouteDurations.slow.inMilliseconds * .001),
  51. );
  52. }
  53. void pushSignInScreen(BuildContext context) {
  54. Navigator.push(
  55. context,
  56. PageRoutes.fade(() => SignInScreen(router: getIt<AuthRouter>()), RouteDurations.slow.inMilliseconds * .001),
  57. );
  58. }
  59. void pushSkipLoginScreen(BuildContext context) {
  60. Navigator.push(
  61. context,
  62. PageRoutes.fade(
  63. () => SkipLogInScreen(
  64. router: getIt<AuthRouter>(),
  65. authRepo: getIt<AuthRepository>(),
  66. ),
  67. RouteDurations.slow.inMilliseconds * .001),
  68. );
  69. }
  70. }