router.dart 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:app_flowy/startup/startup.dart';
  2. import 'package:app_flowy/user/application/auth_service.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/presentation/home/home_screen.dart';
  8. import 'package:flowy_infra/time/duration.dart';
  9. import 'package:flowy_infra_ui/widget/route/animation.dart';
  10. import 'package:flowy_sdk/protobuf/flowy-user/protobuf.dart' show UserProfilePB;
  11. import 'package:flowy_sdk/protobuf/flowy-folder/protobuf.dart';
  12. import 'package:flutter/material.dart';
  13. class AuthRouter {
  14. void pushForgetPasswordScreen(BuildContext context) {
  15. // TODO: implement showForgetPasswordScreen
  16. }
  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 pushHomeScreen(BuildContext context, UserProfilePB profile,
  28. CurrentWorkspaceSettingPB workspaceSetting) {
  29. Navigator.push(
  30. context,
  31. PageRoutes.fade(() => HomeScreen(profile, workspaceSetting),
  32. RouteDurations.slow.inMilliseconds * .001),
  33. );
  34. }
  35. }
  36. class SplashRoute {
  37. Future<void> pushWelcomeScreen(
  38. BuildContext context, UserProfilePB userProfile) async {
  39. final screen = WelcomeScreen(userProfile: userProfile);
  40. final workspaceId = await Navigator.of(context).push(
  41. PageRoutes.fade(
  42. () => screen,
  43. RouteDurations.slow.inMilliseconds * .001,
  44. ),
  45. );
  46. // ignore: use_build_context_synchronously
  47. pushHomeScreen(context, userProfile, workspaceId);
  48. }
  49. void pushHomeScreen(BuildContext context, UserProfilePB userProfile,
  50. CurrentWorkspaceSettingPB workspaceSetting) {
  51. Navigator.push(
  52. context,
  53. PageRoutes.fade(() => HomeScreen(userProfile, workspaceSetting),
  54. RouteDurations.slow.inMilliseconds * .001),
  55. );
  56. }
  57. void pushSignInScreen(BuildContext context) {
  58. Navigator.push(
  59. context,
  60. PageRoutes.fade(() => SignInScreen(router: getIt<AuthRouter>()),
  61. RouteDurations.slow.inMilliseconds * .001),
  62. );
  63. }
  64. void pushSkipLoginScreen(BuildContext context) {
  65. Navigator.push(
  66. context,
  67. PageRoutes.fade(
  68. () => SkipLogInScreen(
  69. router: getIt<AuthRouter>(),
  70. authService: getIt<AuthService>(),
  71. ),
  72. RouteDurations.slow.inMilliseconds * .001),
  73. );
  74. }
  75. }