如何替换 copyWith 以便不复制,而是创建新状态?
How to replace copyWith so as not to copy, but to create a new state?
我有一个负责在 Navogation Bottom 中切换索引的 bloc Bar.It 以复制旧状态并更改它的方式实现。我需要替换 copyWith 并使其不复制而是创建一个新状态。如何在给定的 bloc 中实施和重写?
class BottomNavyBloc extends Bloc<BottomNavyEvent, BottomNavyState> {
BottomNavyBloc() : super(const BottomNavyState()) {
on<ChangePageEvent>(
(event, emit) => emit(
state.copyWith(index: event.index),
),
);
}
}
abstract class BottomNavyEvent extends Equatable {
const BottomNavyEvent();
@override
List<Object> get props => [];
}
class ChangePageEvent extends BottomNavyEvent {
final int index;
const ChangePageEvent({
required this.index,
});
@override
List<Object> get props => [index];
}
我的状态:
class BottomNavyState extends Equatable {
const BottomNavyState({
this.index = 0,
});
final int index;
@override
List<Object> get props => [index];
}
class ChangePageState extends BottomNavyState {
}
我们使用
emit(state.copyWith(index: event.index))
表示我们正在通过更改 index
.
复制先前状态的所有元素
你的状态 BottomNavyState
目前只有一个变量。因此,上述 copyWith
的行为类似于使用发射新状态。
我们不应尝试更改或重写该方法 copyWith
,因为它违背了该方法的实际目的。
相反,您可以使用
emit(BottomNavyState(index: event.index))
使用新的状态构造函数而不是从以前的状态复制。
我有一个负责在 Navogation Bottom 中切换索引的 bloc Bar.It 以复制旧状态并更改它的方式实现。我需要替换 copyWith 并使其不复制而是创建一个新状态。如何在给定的 bloc 中实施和重写?
class BottomNavyBloc extends Bloc<BottomNavyEvent, BottomNavyState> {
BottomNavyBloc() : super(const BottomNavyState()) {
on<ChangePageEvent>(
(event, emit) => emit(
state.copyWith(index: event.index),
),
);
}
}
abstract class BottomNavyEvent extends Equatable {
const BottomNavyEvent();
@override
List<Object> get props => [];
}
class ChangePageEvent extends BottomNavyEvent {
final int index;
const ChangePageEvent({
required this.index,
});
@override
List<Object> get props => [index];
}
我的状态:
class BottomNavyState extends Equatable {
const BottomNavyState({
this.index = 0,
});
final int index;
@override
List<Object> get props => [index];
}
class ChangePageState extends BottomNavyState {
}
我们使用
emit(state.copyWith(index: event.index))
表示我们正在通过更改 index
.
你的状态 BottomNavyState
目前只有一个变量。因此,上述 copyWith
的行为类似于使用发射新状态。
我们不应尝试更改或重写该方法 copyWith
,因为它违背了该方法的实际目的。
相反,您可以使用
emit(BottomNavyState(index: event.index))
使用新的状态构造函数而不是从以前的状态复制。