• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

중복된 페이지에서 같은 ViewModel이 여러 개 필요할 때

22.02.22 19:32 작성 조회수 291

0

강의에서 ViewModel은 provider_setup.dart 파일을 별도로 만들어서 의존성 주입을 해줬는데요. 중복된 페이지에서 페이지별로 ViewModel이 필요할 때는 어떤 방법이 좋을까요?

예를 들어, FeedPage가 있는데 이 FeedPage에는 새로운 FeedPage를 여는 버튼이 있을 수 있습니다. 이 버튼을 누르면 새로운 FeedPage가 열리는데 1번 FeedPage에서 2번 FeedPage를 여는 식이죠. 추가적으로 3번, 4번 등 계속해서 새로운 FeedPage를 열 수 있고요.

이때, FeedPage의 상태를 FeedViewModel에서 관리해야 하는데 중첩된 FeedPage가 4개면, 총 4개의 FeedViewModel이 필요한데 강의처럼 최상위에서 하나의 ViewModel만 생성하면 이게 어렵더라고요.

class FeedPage extends StatelessWidget {
const FeedPage({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
final viewModel = FeedViewModel();

return ChangeNotifierProvider<FeedViewModel>.value(
value: viewModel,
child: Scaffold(...),
);
}
}

제가 생각한 방법은 최상위에서 하나의 ViewModel만 생성하는 게 아니라 FeedPage의 build() 안에서 각자 ViewModel을 생성하고, 페이지 전체를 Provider로 감싸서 하위 위젯에 의존성을 주입하는 건데 괜찮은 방법일까요, 아니면 혹시 더 나은 방법이 있을까요?

답변 1

답변을 작성해보세요.

1

네. 괜찮은 방법입니다. 그렇게 하시거나 FeedPage를 띄울 때마다 ChangeNotifierProvider(create: ) 로 감싸는 것도 가능합니다. 둘 중에 편한 것으로 하시면 될 것 같습니다.

저는 후자를 선호하는데요.

이런식으로 매번 ViewModel을 새로 생성해야 할 때는 Provider 코드가 길어서 Get이나 다른 패키지를 사용하여 의존성 관련 코드를 줄이는 것도 고민할 부분인 것 같습니다.