Flutter 为什么我们要在颤振阵营中使用Equalable?
我知道equalable有助于比较对象的两个实例,而无需手动操作。 但我到底在哪里可以用它在颤振集团 以下是可均衡使用的示例: 它在哪里有用Flutter 为什么我们要在颤振阵营中使用Equalable?,flutter,dart,bloc,Flutter,Dart,Bloc,我知道equalable有助于比较对象的两个实例,而无需手动操作。 但我到底在哪里可以用它在颤振集团 以下是可均衡使用的示例: 它在哪里有用 abstract class TodosState extends Equatable { const TodosState(); @override List<Object> get props => []; } class TodosLoadInProgress extends TodosState {} class
abstract class TodosState extends Equatable {
const TodosState();
@override
List<Object> get props => [];
}
class TodosLoadInProgress extends TodosState {}
class TodosLoadSuccess extends TodosState {
final List<Todo> todos;
const TodosLoadSuccess([this.todos = const []]);
@override
List<Object> get props => [todos];
@override
String toString() => 'TodosLoadSuccess { todos: $todos }';
}
class TodosLoadFailure extends TodosState {}
我认为这对于比较BlocBuilder中的状态很有用。 下面的代码是使用Equatable的一个好例子
if(state is [Some State])
我认为这对于比较BlocBuilder中的状态很有用。 下面的代码是使用Equatable的一个好例子
if(state is [Some State])
当涉及到流时,对象和数据的比较总是很困难的,因为我们需要根据它来决定状态更新。 我们需要Equatable,因为它在内部重写==和hashCode,这节省了大量样板代码。在Bloc中,我们必须将equalable扩展到States和Events类才能使用此功能
abstract class TodosState extends Equatable {}
因此,这意味着TodosState不会进行重复调用,如果出现相同的状态,也不会重新生成小部件
让我们看看Equatable中的道具用法以及它的特殊之处
定义不带道具的状态:
使用道具定义状态:
当我们希望将状态与props列表中声明的值进行比较时声明的props
class TodosLoadSuccess extends TodosState {
final String name;
final List<Todo> todos;
const TodosLoadSuccess([this.name, this.todos = const []]);
@override
List<Object> get props => [name, todos];
}
详细博客:当涉及到流时,对象和数据比较总是很难做,因为我们需要根据它来决定状态更新。 我们需要Equatable,因为它在内部重写==和hashCode,这节省了大量样板代码。在Bloc中,我们必须将equalable扩展到States和Events类才能使用此功能
abstract class TodosState extends Equatable {}
因此,这意味着TodosState不会进行重复调用,如果出现相同的状态,也不会重新生成小部件
让我们看看Equatable中的道具用法以及它的特殊之处
定义不带道具的状态:
使用道具定义状态:
当我们希望将状态与props列表中声明的值进行比较时声明的props
class TodosLoadSuccess extends TodosState {
final String name;
final List<Todo> todos;
const TodosLoadSuccess([this.name, this.todos = const []]);
@override
List<Object> get props => [name, todos];
}
详细博客:也许这是给你的答案:也许这是给你的答案: