我想在我的应用程序中实现颤振块。我想比较列表的长度并相应地触发 blocListener 。但是当使用listenWhen时,它提供的参数(previousState和currentState)都显示列表的当前长度。我希望这两个参数会给出不同的状态,通过这些状态我可以比较不同状态的列表长度。
BlocListener<ListBloc, ListCubitState>(
listener: (context, state){
print("new order");
},
listenWhen: (previous, current){
if(current.items.length > previous.items.length){
return true;
}
print(**current.items.length.toString()**);
print(**previous.items.length.toString()**);
return false;
},
我的肘类:
class ListBloc extends Cubit<ListCubitState>{
ListBloc(): super(ListCubitState(items: ["items", "items"]));
addItem() => emit(ListCubitState(items: addItemToList(state.items)));
removeItem() => emit(ListCubitState(items: removeItemToList(state.items)));
List<String> addItemToList(List<String> item){
List<String> newList = item;
newList.add("adsfasf");
return newList;
}
List<String> removeItemToList(List<String> item){
List<String> newList = item;
newList.removeLast();
return newList;
}
}
任何人都可以建议代码中有什么问题(或)有没有其他方法可以实现它?