인프런 커뮤니티 질문&답변

dlckdals9467님의 프로필 이미지
dlckdals9467

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

BasketProvider 작업하기

플러터 splash화면 시간 질문

작성

·

560

0

FutureOr<String?> redirectLogic(BuildContext context,GoRouterState state){

final UserModelBase? user = ref.read(userMeProvider);

//로그인 중

final logginIn = state.location == '/login';

//회원가입 페이지 이동중인지

final joinIn = state.location == '/login/join';

//유저 정보가 없는데

//로그인중이면 그대로 로그인 페이지에 두고

//만약 로그인중이 아니라면 로그인 페이지로 이동

if(user == null && !joinIn){

return logginIn ? null : '/login';

}

//회원가입 페이지로 이동중이라면

if(user==null && joinIn){

return '/login/join';

}

//user가 null이 아님

//UserModel

//사용자 정보가 있는상태면

//로그인 중이거나 현재 위치가 SplashScreen이면

//홈으로 이동

if(user is UserModel){

return logginIn || state.location == '/splash' ? '/' : null;

}

//UserModelError

if(user is UserModelError){

return logginIn ? null : '/login';

}

return null;

}

}

 

위의 로직에서 splash화면을 인스타그램처럼 1초 지속되도록 하고싶은데 혹시 방법이 있을까요?

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

인증 로직에 고의로 1초정도 딜레이를 넣어주는건 어떤가요?

예를들어서 인증 요청을 하기전에 DateTime을 저장한 다음 인증이 끝나고 나서의 DateTime과 비교를 한 후 만약에 1초를 넘었으면 바로 인증 결과를 상태로 저장해서 redirect가 되도록 하고 1초보다 빨랐을경우 차이만큼 고의로 Future.wait()를 해준다음 상태를 저장하는 방법입니다.

감사합니다!

dlckdals9467님의 프로필 이미지
dlckdals9467
질문자

final UserModelBase? user = ref.read(userMeProvider);

위의 로직 전후로 말씀하시는건가욤??

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

아뇨. redirect 함수에다가 넣어버리면 매번 1초의 딜레이가 생기니 userMeProvider에서 토큰을 확인할때 넣으시는게 좋겠습니다.

dlckdals9467님의 프로필 이미지
dlckdals9467
질문자

감사합니다 ㅠㅠ

dlckdals9467님의 프로필 이미지
dlckdals9467

작성한 질문수

질문하기