이들 클래스는 Flutter의 상태 관리 라이브러리인 flutter_bloc에서 제공하는 주요 컴포넌트들입니다. 각각의 역할을 간략히 설명드리겠습니다.

  1. BlocBuilder:

    BlocBuilder<CounterCubit, int>(
      builder: (context, count) {
        return Text('$count');
      },
    );
    
    
  2. BlocSelector:

    BlocSelector<CounterCubit, int, bool>(
      selector: (state) => state.isEven,
      builder: (context, isEven) {
        return Text('$isEven');
      },
    );
    
    
  3. BlocProvider:

    BlocProvider(
      create: (context) => CounterCubit(),
      child: CounterPage(),
    );
    
    
  4. MultiBlocProvider:

    MultiBlocProvider(
      providers: [
        BlocProvider<CounterCubit>(create: (context) => CounterCubit()),
        BlocProvider<AnotherCubit>(create: (context) => AnotherCubit()),
      ],
      child: MyApp(),
    );
    
    
  5. BlocListener:

    BlocListener<CounterCubit, int>(
      listener: (context, state) {
        if (state == 10) {
          // Do something when state is 10
        }
      },
      child: CounterPage(),
    );
    
    
  6. MultiBlocListener:

    MultiBlocListener(
      listeners: [
        BlocListener<CounterCubit, int>(
          listener: (context, state) {
            if (state == 10) {
              // Do something
            }
          },
        ),
        BlocListener<AnotherCubit, AnotherState>(
          listener: (context, state) {
            // Another listener
          },
        ),
      ],
      child: MyApp(),
    );
    
    
  7. BlocConsumer:

    BlocConsumer<CounterCubit, int>(
      listener: (context, state) {
        if (state == 10) {
          // Do something
        }
      },
      builder: (context, state) {
        return Text('$state');
      },
    );
    
    
  8. RepositoryProvider:

    RepositoryProvider(
      create: (context) => CounterRepository(),
      child: MyApp(),
    );
    
    
  9. MultiRepositoryProvider:

    MultiRepositoryProvider(
      providers: [
        RepositoryProvider<CounterRepository>(create: (context) => CounterRepository()),
        RepositoryProvider<AnotherRepository>(create: (context) => AnotherRepository()),
      ],
      child: MyApp(),
    );
    
    

이 클래스들은 모두 Flutter 애플리케이션에서 상태 관리를 보다 쉽게 하고, 코드의 가독성과 유지 보수성을 높이는 데 도움을 줍니다.