작성
·
75
·
수정됨
0
리프레시 토큰이 만료될 때 바로 login screen으로 이동하는 것이 아니라 다이얼로그를 띄운 후 확인 버튼을 누르면 화면 이동을 하고 싶은데 이 showDialog를 어디서 해야 할지 난관에 빠졌습니다.
현재는 리프레시가 만료되면
dio interceptor에서 authProvider의 logout() 을 통해
userMeProvider의 logout()을 호출해 state를 null로 만들고,
goRouter가 state가 null이면 바로 로그인 스크린으로 redirect 시키고 있는데
이 흐름이 뷰에서 이루어지는 것이 아니라서 context가 필요한 showDialog를 어느 부분에서 구현해야 할지 감이 안 잡힙니다.
state를 null로 만들기 전에 다이얼로그를 띄우려면
AuthProvider에서 userMeProvider의 logout를 호출하기 전에 실행되어야 할 것 같기도 한데
logout() {
// showDialog()???
ref.read(userMeProvider.notifier).logout();
}
결국 view단에서 호출하는 것이 아니기 때문에 context를 얻어올 방법이 떠오르지 않네요...
답변 1
0
안녕하세요!
showDialog는 UI에서 구현하는게 맞습니다.
상태관리를 하나 따서 만료가 될때마다 시그널을 주고
해당 시그널을 받아서 다이아로그를 보여주면 될 것 같습니다.
context를 UI 외부로 전달하는건 추천드리지 않습니다.
다만 보통 토큰 만료를 사용자에게 알려주진 않습니다.
감사합니다!