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());
},
);
}