Showing posts with label provider. Show all posts
Showing posts with label provider. Show all posts

Friday, December 18, 2020

Flutter에서 Provider를 활용한 다이얼로그 갱신 방법

Flutter에서 Provider를 활용한 다이얼로그 갱신 방법

Flutter 개발 중에는 Provider를 활용하여 다양한 기능을 구현하게 됩니다. 특히, 어떤 화면에서 다이얼로그를 띄우고 그 다이얼로그 화면을 갱신해야 하는 경우가 자주 있습니다. 하지만 이런 작업은 항상 생각대로 잘 진행되지 않는 경우가 많습니다.

일반적으로, 이런 문제는 StatefulBuilder를 사용하여 해결할 수 있습니다. 하지만, 우리는 Provider를 사용하고 있기 때문에 Provider의 특성을 최대한 살려서 해결책을 찾아보겠습니다.

Provider로 다이얼로그 갱신하기

Provider의 기능을 최대한 활용하기 위해서, 아래와 같은 방식으로 다이얼로그를 구성할 수 있습니다:


void myShowDialog(){
   final myModel = Provider.of<LoaderNotifier>(context, listen:false);
   showDialog(
     context: context,
     barrierDismissible:false,
     builder:_{
       return ChangeNotifierProvider.value(
           value : myModel,
           child : Consumer<LoaderNotifier>(
            builder:(context,model ,child )=> DialogComponent.loadingPopUp(description:model.message)
           )
       );
     },
   );
}

Note: 위 코드에서 `ChangeNotifierProvider.value` 메소드는 `myModel` 인스턴스 값을 제공합니다. 이 값은 `Consumer<LoaderNotifier>` 내부에서 사용되며 이렇게 하면 `DialogComponent.loadingPopUp(description:model.message)` 에서 변경된 값을 반영할 수 있게 됩니다.