본문 바로가기
Flutter

[Flutter] Notifier 사용하여 특정 page나 view 갱신하기

by DevJake 2022. 10. 27.

일단 상황을 설명하면, 

게시판을 만들어 놓은 상태이고

Tab View를 만들어 놓았고, 

각 탭에는  Notice, Freeboard 두개의 게시판이 있다. 

그리고 Freeboard 안에는 List container로 이루어져 있어서

container 에서 해당 셀을 누르면 Freeboard_detail 로 이동한다. 

즉, 

Tab > Freeboard > Freeboard_detail > Freeboard_container 

이렇게 네 단계를 거친다. 

맨 마지막인 Freeboard_container 에서 글을 삭제하면, freeboard 로 돌아가는데 

setState로 게시판을 refresh 할 수가 없다. 

뒤로 가는 두 단계 중 한단계가 Navigator로 이동한게 아니고, 다른 class 를 불러와서 붙여놓은 거라..

그래서 notifier 를 이용하여 게시판을 refresh 하려고 한다. 

 

1. ChangeNotifierProvider 설정

앱 전역에서 특정 notifier를 구독할 수 있도록 설정이 필요. 

main.dart 에 runApp 에서 

Provider 를 지정한다. 

 

2. ChangeNoti() 는 따로 dart file 을 만들어 줘야 한다. 

이걸로 데이터도 이동시킬수 있다. 

지금은 게시판 refresh가 목적이니, value 가 바뀐것만 감지하게끔 하면 된다. 

 

3. ChangeNoti 내부에 _count 가 바뀌었다는 걸 감지하고 작동하도록 한다.  

Consumer 를 사용하는데, ChangeNoti를 구독해서, value 가 바뀌면 Freeboard() 를 다시 불러오게 한다. 

 

4. 이제 Noti를 날리는 부분은? 

게시판 글 삭제 API 를 돌린 후에, 삭제가 완료되면, 

Provider.of 를 이용하여 ChangeNoti에 등록해놓은 value를 바꿔준다. 

 

테스트 해보니, 글 삭제 후 바로 freeboard refresh 가 되는걸 확인했다. 

댓글