showModalBottomSheet에서 Consumer 사용시 Parent 위젯의 Provider 발견 못하는 오류

하스레·2022년 9월 16일
0

오류 설명

Parent위젯에서 showModalBottomSheet을 사용하여 모달 위젯을 리턴했는데, 어떤 짓을 해도 모달위젯에서 Parent위젯에서 생성한 Provider을 찾지 못하는 오류가 발생했다.

Error: Could not find the correct Provider<...> above this Consumer<...> Widget

오류 원인

어제부터 서치하다 드디어 이유를 찾았다 ㅜㅜㅜ 프로바이더는 알다시피 위젯 트리에서 조상의 것을 consume할 수 있는데,
showDialog와 비슷한 종류의 함수시, 해당 dialog는 다른 위젯트리에 위치하게 되어 Parent 위젯의 provider를 찾을 수 없었던 것이다...ㅠㅠ (참고: 스택오버플로우 감사합니다...)

오류 해결

다음과 같이 새로운 위젯트리에 원하는 프로바이더를 넣어주었다.

_showConfirmModal(BuildContext? context) {
    final viewModel = Provider.of<ViewModel>(context!, listen: false);
    
    showModalBottomSheet(
      context: context,
      builder: (context) {
        return ChangeNotifierProvider.value(value: viewModel, child: ConfirmModal());
      },
    );
  }
profile
Software Developer

0개의 댓글