인프런 커뮤니티 질문&답변
CartBloc 대체 코드 올립니다.
해결된 질문
작성
·
415
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; // 값을 하나씩 밀어넣어주는 코드
  // }
}




