본문 바로가기
백엔드개발자/FLUTTER, DART

[Flutter] RepositoryProvider, MultiRepositoryProvider

by 보혀니 2024. 1. 10.

RepositoryProvider

 : Bloc 패턴 사용시 활용되는 개념

 : 데이터 레이어나 데이터 관련 서비스를 앱의 다른 부분에 제공하는데 사용

 : 의존성 주입의 한 형태

 : 앱의 비즈니스 로직과 데이터 처리 로직을 분리하는데 도움

 

주요기능

 - 의존성 주입

 - 분리 및 재사용 : 데이터 레이어를 UI로직으로부터 분리 가능. 이를 통해서 데이터 관련 코드를 여러곳에서 재사용할 수 있음. 그러면 유지보수 및 테스트도 용이해짐

 - 단일 진입점 제공 : 데이터 서비스에 대한 접근을 중앙화해서 관리할 수 있다.

 

    RepositoryProvider(
      create: (context) => MyRepository(),	// 데이터 관련 작업 수행클래스
      child: MyApp(),
    );

 

 

 

MultiRepositoryProvider

 : RepositoryProvider를 효율적으로 관리하기 위한 위젯

 

주요특징

 - 중복제거 : 여러 RepositoryProvider를 개별적으로 사용하는대신, MultiRepositoryProvider 사용을 통해 코드 중복 줄임

 - 계층화 : 여러 레포지토리를 단일 위젯 트리로 그룹화 할 수 있음

 - 효율적 의존성 주입 : 여러 레포지토리를 앱의 다른 부분에서 효율적으로 재사용 가능

 

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

 

 여기서 RepositoryA, RepositoryB는 애플리케이션의 다른 부분에서 접근할 수 있도록 MultiRepositoryProvider에 의해서 제공이 된다.