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

지루한 성게님의 프로필 이미지

작성한 질문수

Flutter 중급 1편 - 클린 아키텍처

18 DI (의존성 주입)

Provider

해결된 질문

24.01.24 12:20 작성

·

161

0

강의에서 이야기해주신 것 처럼 여러개의 Provider를 사용하기위해 MultiProvider를 사용하게되는데요.

이럴 때 일부 Provider가 일부 자식위젯에서만 사용될 경우

해당 자식 위젯에서만 선언하는 것과 최상위에 MultiProvider내에 전부 선언해서 사용하는 것 중 어떤 것을 선호하시나요?

그리고 왜 그런지 알 수 있을까요?

답변 1

1

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

2024. 01. 25. 00:00

DB 처럼 한번 생성후 재활용해도 되는 경우 최상위에 배치하여 싱글턴으로 제공하고, 매번 생성해야 하는 객체는 해당 위젯에 감싸는 방식을 사용합니다.

 

지루한 성게님의 프로필 이미지

2024. 01. 28. 00:00

최상위에 배치하여 싱글턴으로 제공한다는 말이 잘 이해가 되지 않는데 조금만 더 자세히 설명이 가능할까요?
그리고 생성한 객체를 재활용을 하더라도, 최상위에 배치하면 notifiListener() 호출 시, 포함된 모든 위젯이 rebuild될텐데, 성능에 큰 관계가 없을까요?

 

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

2024. 01. 28. 02:01

최상위에 배치하면 하위 모든 위젯에서 참조가 가능하기 때문에 싱글턴이라고 표현을 했습니다.

말씀하신대로 상태를 가지는 ViewModel 의 경우는 빈번하게 변경되기 때문에 각 화면 생성시에 배치합니다.

데이터를 제공하는 객체들(Repository 등)의 경우에는 데이터 없이 행위만을 가지고 있기 때문에 변경이 안 되는 객체이므로 최상위에 배치해도 무방합니다.