在flutter_bloc中为(签出)功能添加单独的块

时间:2020-10-12 08:15:46

标签: flutter authentication logout bloc flutter-bloc

我一直在使用floc模式在flutter应用程序中创建登录功能,并且我已经使用了(flutter_bloc)插件>>>>一切正常,但是我的问题是我应该为(注销)创建一个单独的bloc吗?是否,就我而言,我只是使用(auth bloc)添加事件和退出状态:

事件: 导入'package:equatable / equatable.dart';

 abstract class AuthEvents extends Equatable{}

class StartedEvent extends AuthEvents {
  @override
  List<Object> get props => [];

}

class SignOutEvent extends AuthEvents{
 @override
 List<Object> get props => [];
}

class AuthLoggedInEvent extends AuthEvents {
 final String token;
 AuthLoggedInEvent({this.token});
 @override
 String toString() => 'LoggedIn { token: $token }';
 @override
 List<Object> get props => [token];
}

状态:

 class AuthStates extends Equatable{
  @override
  List<Object> get props => [];
}

class AuthInitialState extends AuthStates {
}

class AuthenticatedState extends AuthStates {
  User user;
  AuthenticatedState({this.user});

}

class UnauthenticatedState extends AuthStates {}

class LogOutSuccessState extends AuthStates{}

bloc:

@override
  Stream<AuthStates> mapEventToState(AuthEvents event) async*{
       try {
         if(event is StartedEvent) {
           var loggedIn = repo.isUserSignedIn();
           if(loggedIn) {
             User user =  repo.getUser();
             yield AuthenticatedState(user: user);
           } else {
             yield UnauthenticatedState();
           }
         } else if(event is SignOutEvent){
           repo.signOut();
           yield LogOutSuccessState();
           yield UnauthenticatedState();
         }

这是一个好方法吗?还是为它创建一个单独的集团更好?谢谢

1 个答案:

答案 0 :(得分:1)

您的“正在注销”状态是否有其自己的状态和规则集?然后,您应该创建它自己的集团。

例如,您可能有一个团体在注销时处理注册和注册。对于它自己的集团来说,这似乎是一个完美的例子。