可以使用BlocBuilder和ListView.builder来显示列表,并比较列表的长度。首先,在BLoC中定义一个Stream
Bloc:
class MyBloc extends Bloc {
final StreamController _listLengthController = StreamController();
Stream get listLengthStream => _listLengthController.stream;
MyBloc() : super(InitialMyState());
@override
Stream mapEventToState(MyEvent event) async* {
if (event is AddItemToMyList) {
yield* _mapAddItemToMyListToState(event);
_listLengthController.add(state.myList.length);
}
}
Stream _mapAddItemToMyListToState(AddItemToMyList event) async* {
List updatedList = List.from(state.myList)..add(event.myItem);
yield MyState(updatedList);
}
}
Widget:
class MyListWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder(
builder: (context, state) {
return ListView.builder(
itemCount: BlocProvider.of(context).listLengthStream.value,
itemBuilder: (context, index) {
return ListTile(
title: Text(state.myList[index].title),
);
},
);
}
);
}
}
这里的MyEvent可以是添加项目到列表的事件。MyState是一个包含包含MyItem的myList列表的类。"""