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

Posted

技术标签:

【中文标题】在颤振块中为(注销)功能添加单独的块【英文标题】:add separate bloc for (Sign Out) functionality in flutter_bloc 【发布时间】:2021-01-26 13:01:39 【问题描述】:

我一直在使用 bloc 模式在我的 Flutter 应用程序中创建登录功能,并且我使用了 (flutter_bloc) 插件>>>> 一切正常,但我的问题是我应该为 (logout) 创建一个单独的 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

集团:

@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】:

您的“正在注销”状态是否有自己的一组状态和规则?然后你应该创建它自己的块。

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

【讨论】:

感谢您的回复,请检查我上面的代码,您可以看到我只需要一个状态和一个事件来注销 .... 因为我有 Auth bloc,我在其中添加了注销事件和状态, 所以 auth bloc 用于检查用户是否经过身份验证(如登录)或未经身份验证(如 singnout) 我不确定我是否理解这个问题。如果“退出”是一个没有逻辑的单一状态,那么不,你不需要另一个集团,那会做什么?

以上是关于在颤振块中为(注销)功能添加单独的块的主要内容,如果未能解决你的问题,请参考以下文章

在颤振应用程序中为约会应用程序制作功能日期和时间选择器

Flutter app:如何实现正确的注销功能?

用户注销时从队列中处理块执行(将图像保存在核心数据中的块)

如何使用颤振功能小部件库生成代码?

在 Nginx 的反向代理中为特定静态文件添加缓存?

如何在delphi firemonkey中为floatanimation添加音效?