Flutter 의 bloc 사용방법이 버전이 변경되면서 바뀌었다.
기존에는
if (event is GetWeekRecordEvent)
yield* _mapGetWeekRecord(event);
else if (event is GetCalendarRecordEvent)
yield* _mapGetCalendarRecord(event);
else if (event is KeepRecordEvent)
yield* _mapKeepRecord(event);
else if (event is ModifyRecordEvent)
yield* _mapModifyRecord(event);
else if (event is GetSyncDiaryEvent) yield* _mapDataSync();
}
Stream<RecordState> _mapDataSync() async* {
var data = await recordRepository.getDataSync();
}
Stream<RecordState> _mapGetWeekRecord(GetWeekRecordEvent event) async* {
List<Record> recordList = [];
var data = await recordRepository.getWeekRecord(event);
if (data["result"].isEmpty) {
yield state.update(loading: true, sendResult: false);
} else {
data["result"]
.map((record) => {recordList.add(Record.fromJson(record))})
.toList();
yield state.update(
loading: true, sendResult: true, recordList: recordList);
}
}
이런 방식으로 사용되었다면
이제는
BrandBloc() : super(BrandInitial()) {
on<BrandEvent>((event, emit) {
});
on<FindBrandEvent>((event, emit) {
return test();
});
}
final BrandRepository _brandRepository = BrandRepository();
Future<void> test() async {
print('test success');
final List<Brand> brandList = await _brandRepository.get();
}
요런 방식으로 바뀌었다.
이제는 Stram이나 async* 등의 기호를 쓰지 않아도 된당.
이제는 Cubit등의 다른 역할등도 생겻는데.... 추후에 다뤄보도록 하자