在颤振块中为(注销)功能添加单独的块
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) 我不确定我是否理解这个问题。如果“退出”是一个没有逻辑的单一状态,那么不,你不需要另一个集团,那会做什么?以上是关于在颤振块中为(注销)功能添加单独的块的主要内容,如果未能解决你的问题,请参考以下文章