일단 상황을 설명하면,
게시판을 만들어 놓은 상태이고
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 가 되는걸 확인했다.
'Flutter' 카테고리의 다른 글
[Flutter] Textfield에서 한글 작성시 중복 입력되는 버그(24.05.20 기준) (0) | 2024.05.20 |
---|---|
[Flutter] 구글/카카오 Login API 구현 - 앱 배포후 수정해야 할 것 (0) | 2022.12.31 |
[Flutter] 키보드 appear시 Textfield를 키보드 위로 올리기 (0) | 2022.12.30 |
[Flutter] 시간차이 구하기 (Time difference) (0) | 2022.09.15 |
댓글