所以,这很奇怪。我有一个bloc设置程序和一个将事件发送到bloc并接收状态的屏幕...问题是屏幕在bloc接收事件之前正在接收状态...这怎么可能
这是代码。
屏幕:
@override
Widget build(BuildContext context) {
BlocProvider.of<NoteBloc>(context).add(ScreenLoadedEvent(id: noteId));
print('Screen: Send the screenloadedevent');
return Scaffold(
body: BlocBuilder<NoteBloc, State>(
builder: (context, state) {
if (state is InitialState) {
print('state initial'); //this never prints...
return Container();
}
if (state is LoadedState) {
print('Screen: Recieved state from bloc state.note is ${state.note.title}');
return SomeWidget();
}
集团:
class NoteBloc extends Bloc<Event, State> {
NoteRepo notesRepository;
NoteBloc({this.notesRepository});
@override
State get initialState => InitialState();
@override
Stream<State> mapEventToState(Event event) async* {
if (event is ScreenLoadedEvent) {
print('Bloc: recieved screenloadedvent');
note = await notesRepository.fetchNote(event.id);
yield LoadedState(note);
}
这是喷出的打印件。屏幕接收状态后,集团如何接收事件?团体只有在收到事件后才发送状态,对吗?
I/flutter ( 5256): Screen: Send the screenloadedevent
I/flutter ( 5256): Screen: Recieved state from bloc state.note is: null
Reloaded 8 of 757 libraries in 498ms.
I/flutter ( 5256): Bloc: recieved screenloadedevent <-- why is this happening last???