welcome_screen.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. getIt<WelcomeBloc>()..add(const WelcomeEvent.check()),
  16. child: Scaffold(
  17. body: BlocListener<WelcomeBloc, WelcomeState>(
  18. listener: (context, state) {
  19. state.auth.map(
  20. authenticated: (_) =>
  21. _pushToScreen(context, getIt<IWelcomeRoute>().home()),
  22. unauthenticated: (_) =>
  23. _pushToScreen(context, getIt<IWelcomeRoute>().signIn()),
  24. );
  25. },
  26. child: const Body(),
  27. ),
  28. ),
  29. );
  30. }
  31. void _pushToScreen(BuildContext context, Widget screen) {
  32. /// Let the splash view sit for a bit. Mainly for aesthetics and to ensure a smooth intro animation.
  33. Future<void>.delayed(1.0.seconds, () {
  34. Navigator.push(
  35. context,
  36. PageRoutes.fade(
  37. () => screen, RouteDurations.slow.inMilliseconds * .001));
  38. });
  39. }
  40. }