简体   繁体   English

在 flutter_bloc 中为(注销)功能添加单独的块

[英]add separate bloc for (Sign Out) functionality in flutter_bloc

I have been using bloc pattern to create a login feature in my flutter application, and i have used the (flutter_bloc) plugin>>>> everything work good, but my question is should i create a separate bloc for (logout) or not, in my case i just add the events and state for logout with (auth bloc):我一直在使用 bloc 模式在我的 flutter 应用程序中创建登录功能,并且我使用了 (flutter_bloc) 插件>>>> 一切正常,但我的问题是我是否应该为(注销)创建一个单独的 bloc,在我的情况下,我只是添加事件和状态以使用(auth bloc)注销:

event: import 'package:equatable/equatable.dart';事件:导入 '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];
}

state:状态:

 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();
         }

does it a good approach?这是一个好方法吗? or it is better to create a separate bloc for it?还是最好为它创建一个单独的集团? thanks谢谢

Does your "being logged out" state have it's own set of states and rules?您的“正在注销”状态是否有自己的一组状态和规则? Then you should create it's own bloc.然后你应该创建它自己的块。

For example you could have one bloc that handles the sign up and registration when logged out.例如,您可以拥有一个在注销时处理注册和注册的组。 That seems to be a perfect example for it's own bloc.对于它自己的集团来说,这似乎是一个完美的例子。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM