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)` 에서 변경된 값을 반영할 수 있게 됩니다.


1 comment:

  1. 정말 감사합니다. 큰 도움이 되었습니다.

    ReplyDelete