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