Flutter Flatter集团/Cubit国家级最佳实践
我对使用Bloc和Cubit还不熟悉,所以我正试图找出一些专门针对State组件的最佳实践。我有一个简单的TODO应用程序,其中TODO可以处于多个不同的状态:Flutter Flatter集团/Cubit国家级最佳实践,flutter,dart,bloc,cubit,Flutter,Dart,Bloc,Cubit,我对使用Bloc和Cubit还不熟悉,所以我正试图找出一些专门针对State组件的最佳实践。我有一个简单的TODO应用程序,其中TODO可以处于多个不同的状态: part of 'todos_cubit.dart'; abstract class TodosState extends Equatable { const TodosState(); @override List<Object> get props => []; } class TodosLoad
part of 'todos_cubit.dart';
abstract class TodosState extends Equatable {
const TodosState();
@override
List<Object> get props => [];
}
class TodosLoading extends TodosState {}
class TodosLoaded extends TodosState {
final List<Todo> todos;
TodosLoaded(this.todos);
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is TodosLoaded && listEquals(other.todos, todos);
}
@override
int get hashCode => todos.hashCode;
}
class TodosEmpty extends TodosState {}
class TodosError extends TodosState {
final String error;
TodosError(this.error);
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is TodosError && other.error == error;
}
@override
int get hashCode => error.hashCode;
}
todos_cubit.dart'的一部分;
TodosState抽象类扩展了Equalable{
常数todostate();
@凌驾
列表获取道具=>[];
}
类TodosLoading扩展TodosState{}
类TodosLoaded扩展TodosState{
最后的待办事项清单;
TodosLoaded(this.todos);
@凌驾
布尔运算符==(对象其他){
如果(相同(此,其他))返回true;
返回other is todosload&&listquals(other.todos,todos);
}
@凌驾
int get hashCode=>todos.hashCode;
}
类TodosEmpty扩展TodosState{}
类TodosError扩展为TodosState{
最终字符串错误;
TodosError(this.error);
@凌驾
布尔运算符==(对象其他){
如果(相同(此,其他))返回true;
返回other is TodosError&&other.error==error;
}
@凌驾
int get hashCode=>error.hashCode;
}
我的问题是,我应该在todosload
子类中保留列表todo
,还是应该将其移动到基类?我的想法是,通过将它移动到基类,它将使我的TodosEmpty
状态变得多余,因为我可以简单地检查一下,看看UI中的todo列表是否为空。如果是这种情况,我是否也应该将字符串错误
移动到基类
我确信每种方法都有其优缺点,只是希望能从任何对Bloc有更多经验的人那里获得灵感。尝试使用Cubit,它可以大大简化代码 我可能会在cubit类中创建一个函数
addToDo(todoItem)
和removeToDo(todoItem)
,用于更新列表并发出更改。list变量将位于Cubit中,您将使用context.read().todoList
从小部件中引用此列表
您将使用如下函数:context.read().addToDo(todoItem)
我已经为Cubit实现的最佳方法编写了教程
我想这篇文章对你会有很大帮助。看一看,我已经在用Cubit了。我只是想知道在设计我的每个州时的最佳实践,以及TODO列表应该是TodosState还是TODOSLOAD。