rsflutterapp

Bahnhofsfoto-App for Android and iOS using Flutter
git clone git://archive.git.mtrnord.blog/MTRNord/rsflutterapp.git
Log | Files | Refs | README

LoginBloc.dart (1125B)


      1 import 'dart:async';
      2 
      3 import 'package:bloc/bloc.dart';
      4 import 'package:meta/meta.dart';
      5 
      6 import '../events/LoginEvent.dart';
      7 import '../events/AuthenticationEvent.dart';
      8 import '../repos/UserRepository.dart';
      9 import '../states/LoginState.dart';
     10 import 'AuthenticationBloc.dart';
     11 
     12 class LoginBloc extends Bloc<LoginEvent, LoginState> {
     13   final UserRepository userRepository;
     14   final AuthenticationBloc authenticationBloc;
     15 
     16   LoginBloc({
     17     @required this.userRepository,
     18     @required this.authenticationBloc,
     19   })  : assert(userRepository != null),
     20         assert(authenticationBloc != null);
     21 
     22   LoginState get initialState => LoginInitial();
     23 
     24   @override
     25   Stream<LoginState> mapEventToState(LoginEvent event) async* {
     26     if (event is LoginButtonPressed) {
     27       yield LoginLoading();
     28 
     29       try {
     30         final token = await userRepository.authenticate(
     31           username: event.username,
     32           password: event.password,
     33         );
     34 
     35         authenticationBloc.add(LoggedIn(token: token));
     36         yield LoginInitial();
     37       } catch (error) {
     38         yield LoginFailure(error: error.toString());
     39       }
     40     }
     41   }
     42 }