인프런 커뮤니티 질문&답변

cudodev22님의 프로필 이미지
cudodev22

작성한 질문수

Flutter 초급 - Http통신, 상태관리

flutter_bloc 라이브러리를 사용한 Bloc 패턴

CartBloc 대체 코드 올립니다.

해결된 질문

작성

·

331

0

import 'package:flutter_bloc/flutter_bloc.dart';
// 이벤트 기반 패턴 라이브러리
import '../model/item.dart';

enum CartEventType { add, remove } // 이벤트 정의

class CartEvent {
  final CartEventType type;
  final Item item;

  CartEvent(this.type, this.item);
}

class CartBloc extends Bloc<CartEvent, List<Item>> {
  // 이벤트, 리스트 정의
  CartBloc() : super([]) {
    on<CartEvent>((event, emit) {
      switch (event.type) {
        case CartEventType.add:
          state.add(event.item);
          break;
        case CartEventType.remove:
          state.remove(event.item);
          break;
      }
      emit(state);
    });
  }

  // CartBloc() : super([]); // 초기값은 빈 배열
  //
  // @override
  // Stream<List<Item>> mapEventToState(CartEvent event) async* {
  //   // 스트림 형태로 방출하게 만듦
  //   // 이벤트를 던지면 어떻게 수행할지 정의
  //   switch (event.type) {
  //     case CartEventType.add:
  //       state.add(event.item);
  //       break;
  //     case CartEventType.remove:
  //       state.remove(event.item);
  //       break;
  //   }
  //   yield state; // 값을 하나씩 밀어넣어주는 코드
  // }
}

답변 2

0

오준석님의 프로필 이미지
오준석
지식공유자

코드 공유 감사합니다

0

cudodev22님의 프로필 이미지
cudodev22
질문자

근데 이게 정확한지는 모르겠네요

cudodev22님의 프로필 이미지
cudodev22

작성한 질문수

질문하기