welcome_screen.dart 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'package:app_flowy/welcome/domain/deps.dart';
  2. import 'package:app_flowy/welcome/presentation/widgets/body.dart';
  3. import 'package:app_flowy/startup/startup.dart';
  4. import 'package:app_flowy/welcome/application/welcome_bloc.dart';
  5. import 'package:flowy_style/route/animation.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter_bloc/flutter_bloc.dart';
  8. import 'package:flowy_style/time/prelude.dart';
  9. class WelcomeScreen extends StatelessWidget {
  10. const WelcomeScreen({Key? key}) : super(key: key);
  11. @override
  12. Widget build(BuildContext context) {
  13. return BlocProvider(
  14. create: (context) {
  15. return getIt<WelcomeBloc>()..add(const WelcomeEvent.check());
  16. },
  17. child: Scaffold(
  18. body: BlocListener<WelcomeBloc, WelcomeState>(
  19. listener: (context, state) {
  20. state.auth.map(
  21. authenticated: (_) =>
  22. _pushToScreen(context, getIt<IWelcomeRoute>().home()),
  23. unauthenticated: (_) =>
  24. _pushToScreen(context, getIt<IWelcomeRoute>().signIn()),
  25. );
  26. },
  27. child: const Body(),
  28. ),
  29. ),
  30. );
  31. }
  32. void _pushToScreen(BuildContext context, Widget screen) {
  33. /// Let the splash view sit for a bit. Mainly for aesthetics and to ensure a smooth intro animation.
  34. Future<void>.delayed(1.0.seconds, () {
  35. Navigator.push(
  36. context,
  37. PageRoutes.fade(
  38. () => screen, RouteDurations.slow.inMilliseconds * .001));
  39. });
  40. }
  41. }