У меня есть два списка для DropDownList в моей форме, я использую шаблон Blo C, я даю 4 состояния для одного события в требовании_ blo c .dart страница.
@override
Stream<DemandAddState> mapEventToState(DemandAddEvent event) async* {
if (event is InitListLoadEvent) {
yield* _setInitListToState(event);
}
}
Stream<DemandAddState> _setInitListToState(InitListLoadEvent event) async* {
yield InitListLoading();
try {
List data = await demandAddRepository.getEmployeeList();
yield EmployeeListLoaded(data: data);
List data2 = await demandAddRepository.getDayOffList();
yield DayOffListLoaded(data2: data2);
} catch (_) {
yield InitListError();
}
}
мое требование_ state.dart равно
class InitListLoading extends DemandAddState {}
class InitListError extends DemandAddState {}
class EmployeeListLoaded extends DemandAddState {
final List data;
const EmployeeListLoaded({@required this.data}) : assert(data != null);
}
class DayOffListLoaded extends DemandAddState {
final List data2;
const DayOffListLoaded({@required this.data2}) : assert(data2 != null);
}
после и по моему требованию_ page.dart ,
Мне нужно дать data , data2 ,
, но, к сожалению, данные обнулились.
body: BlocProvider<DemandAddBloc>(
create: (context) {
return DemandAddBloc(demandAddRepository: demandAddRepository)
..add(InitListLoadEvent());
},
child: BlocBuilder<DemandAddBloc, DemandAddState>(
builder: (context, demandAddState) {
if (demandAddState is InitListLoading) {
return LoadingIndicator();
}
if (demandAddState is DayOffListLoaded) {
data2 = demandAddState.data2;
}
if (demandAddState is EmployeeListLoaded) {
data = demandAddState.data;
}
if (demandAddState is InitListError){ ... }
return ...
ListView(
children: <Widget>[
Form(
key: _formKey,
child: Column(
children: [
_buildDropDownFormField(data),
_buildDropDownFormField(data2),
....
Я потерял данные после конец процесса