[英]Keeping track of multiple states with Flutter BLoC pattern
我正在嘗試使用 BLoC 模式制作身份驗證屏幕,但即使在閱讀了 flutter_bloc lib 的文檔並閱讀了多個實現之后,我仍然對最佳實踐持懷疑態度。
我的主要問題是關於狀態管理。 我的身份驗證屏幕應處理以下狀態:
我真的很想在 bloc 中完成所有的邏輯來創建一個干凈的架構。 有些人說他們每個屏幕使用一個 bloc,有時一個用於整個應用程序的 bloc,但 flutter_bloc 庫說你應該為任何足夠復雜的小部件使用 bloc。
我的問題是,我如何處理多個狀態?
最佳實踐解決方案是什么?
這是我的代碼:
class AuthState extends Equatable{
@override
List<Object> get props => [];
}
class PasswordFieldState extends AuthState{
final bool isObscured;
PasswordFieldState({this.isObscured});
@override
List<Object> get props => [isObscured];
}
class AuthEvent extends Equatable{
@override
List<Object> get props => [];
}
class SetObscurePassword extends AuthEvent{
bool isObscured = false;
}
class passwordTextEditChanged extends AuthEvent{}
class emailTextEditChanged extends AuthEvent{}
class AuthBloc extends Bloc<AuthEvent,AuthState> {
AuthBloc(AuthState initialState) : super(initialState);
@override
Stream<AuthState> mapEventToState(AuthEvent event) async* {
if (event is SetObscurePassword) {
yield PasswordFieldState(isObscured: !event.isObscured);
} else if (event is passwordTextEditChanged) {
print("validation handling");
} else if (event is emailTextEditChanged) {
print("validation handling");
}
}
我想我找到了答案。
不可能使用flutter_bloc庫為整個應用程序創建一個塊。 只有使用流控制器來創建一個沒有庫的 bloc 才能做到這一點。
但是為每個不同的任務創建一個塊並不是一件壞事。 它使代碼更易於測試且更易於理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.