flutter bloc

김민진·2022년 7월 13일

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등의 다른 역할등도 생겻는데.... 추후에 다뤄보도록 하자

profile
dart,c#,java 개발자! 잡다하게 해서 문제될게 없다!

0개의 댓글