我只是想知道,拥有不同的状态和拥有一个具有属性status
的状态来表示状态的当前状态(例如,它是成功还是错误)之间有区别吗?有没有国家声明的最佳实践,比如什么时候是使用一种状态的最佳时机,或者是一种比另一种更受欢迎?
我从官方的集团文件中看到了这一点,其中Timer Bloc tutorial使用的是不同的状态.有TimerInitial、TimerRunInProgress、TimerRunPue和TimerRunComplete.他们都有一套duration
的房产.
abstract class TimerState extends Equatable {
const TimerState(this.duration);
final int duration;
@override
List<Object> get props => [duration];
}
class TimerInitial extends TimerState {
const TimerInitial(super.duration);
@override
String toString() => 'TimerInitial { duration: $duration }';
}
class TimerRunPause extends TimerState {
const TimerRunPause(super.duration);
@override
String toString() => 'TimerRunPause { duration: $duration }';
}
class TimerRunInProgress extends TimerState {
const TimerRunInProgress(super.duration);
@override
String toString() => 'TimerRunInProgress { duration: $duration }';
}
class TimerRunComplete extends TimerState {
const TimerRunComplete() : super(0);
}
这也可以用这种方式编码,对吗?
enum TimerStatus{
initial,
runPause,
runInProgress,
runComplete,
}
class TimerState extends Equatable{
const TimerState(this.duration, this.status);
final int duration;
final TimerStatus status;
@override
List<Object> get props => [duration, status];
}
在Todos应用程序的官方块文档中也有一个这种方法的例子.
enum TodosOverviewStatus { initial, loading, success, failure }
class TodosOverviewState extends Equatable {
const TodosOverviewState({
this.status = TodosOverviewStatus.initial,
this.todos = const [],
this.filter = TodosViewFilter.all,
this.lastDeletedTodo,
});
final TodosOverviewStatus status;
final List<Todo> todos;
final TodosViewFilter filter;
final Todo? lastDeletedTodo;
...
@override
List<Object?> get props => [
status,
todos,
filter,
lastDeletedTodo,
];
}
作为BLOC的初学者,我很好奇哪种情况更适合哪种情况.那么,使用这两种方法中的任何一种有什么优势吗?哪种情况最适合不同的州与具有状态属性的一个州的方法?