如何Either
在以下代碼中正確初始化我的物件?
class JobListState extends Equatable {
const JobListState({
this.status = JobListStatus.initial,
this.jobListSections = Right([]),
this.filter,
});
final JobListStatus status;
final Either<Failure, List<JobListViewmodel?>> jobListSections;
final JobListFilter? filter;
1,5 年前回答了一個非常相似的問題,但這會導致錯誤The default value of an optional parameter must be constant.
而且我想,如果我宣告this.jobListSections = const Right([])
,我就不能再分配 left 了。
我正在分配初始值以創建 Bloc 的初始狀態。
uj5u.com熱心網友回復:
因為你的變數是final
你不能直接改變它。您可以宣告copyWith
更改值的方法。
class JobListState extends Equatable {
const JobListState({
this.status = JobListStatus.initial,
this.jobListSections = Right([]),
this.filter,
});
final JobListStatus status;
final Either<Failure, List<JobListViewmodel?>> jobListSections;
final JobListFilter? filter;
JobListState copyWith({
JobListStatus? status,
Either<Failure, List<JobListViewmodel?>>? jobListSections,
JobListFilter? filter
}) {
return JobListState(
status: status ?? this.status,
jobListSections: jobListSections ?? this.jobListSections,
filter: filter ?? this.filter
);
}
}
// anywhere you use JobListState
var state = JobListState(); // state.jobListSections is Right([])
state = state.copyWith(jobListSections: Left(Failure())); // state.jobListSections is Left
// here you have new state that you can emit it.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/533165.html
標籤:扑镖集团飞镖零安全达茨