在使用 BLoC 库时,我们将所有变量存储在一个状态类中。但是TextEditingController存放在哪里,它不会改变,但它的值会改变吗?
假设我有一个这样的状态类(仅作为示例):
@freezed
abstract class EditItemState with _$EditItemState {
const factory EditItemState.updated({
TextEditingController titleController,
ShoppingItem shoppingItem,
}) = _ShoppingListLoaded;
}
和 Cubit 类:
class EditItemCubit extends Cubit<EditItemState> {
EditItemCubit() : super(EditItemState.updated());
Future<void> titleUpdated() async {
emit(
EditItemState.updated().copyWith(
shoppingItem: state.shoppingItem.copyWith(
title: state.titleController.text,
),
),
);
}
}
所以 Cubit 类的逻辑看起来很乱。我建议将此类控制器直接保存在小部件或 BLoC/Cubit 类中。这是一个正确的方法吗?