welcome_bloc.dart 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import 'package:app_flowy/welcome/domain/auth_state.dart';
  2. import 'package:app_flowy/welcome/domain/i_welcome.dart';
  3. import 'package:flutter_bloc/flutter_bloc.dart';
  4. import 'package:freezed_annotation/freezed_annotation.dart';
  5. part 'welcome_bloc.freezed.dart';
  6. class WelcomeBloc extends Bloc<WelcomeEvent, WelcomeState> {
  7. final IWelcomeAuth authImpl;
  8. WelcomeBloc(this.authImpl) : super(WelcomeState.initial());
  9. @override
  10. Stream<WelcomeState> mapEventToState(WelcomeEvent event) async* {
  11. yield* event.map(
  12. getUser: (val) async* {
  13. final authState = await authImpl.currentUserDetail();
  14. yield state.copyWith(auth: authState);
  15. },
  16. );
  17. }
  18. }
  19. @freezed
  20. abstract class WelcomeEvent with _$WelcomeEvent {
  21. const factory WelcomeEvent.getUser() = _GetUser;
  22. }
  23. @freezed
  24. abstract class WelcomeState implements _$WelcomeState {
  25. const factory WelcomeState({
  26. required AuthState auth,
  27. }) = _WelcomeState;
  28. factory WelcomeState.initial() => const WelcomeState(
  29. auth: AuthState.initial(),
  30. );
  31. }